📄🦌🙌🐟🏖️
日志记录
Where there is a where there is a way
随机文章
按住 Shift 横向滚动
热门文章
按住 Shift 横向滚动
Mybatis进阶

Mybatis进阶

MyBatis的XML映射用于配置复杂动态SQL,通过<select>、<update>、<delete>、<insert>等标签实现。多个参数传入可用Map、自定义对象或@Param注解解决。动态条件通过<if>、<choose>、<where>、<set>、<trim>、<foreach>等标签控制,其中<where>自动去除多余and/or,<set>去除多余逗号。<sql>与<include>复用SQL片段。<resultMap>将查询结果映射为Java对象,支持继承、复用及嵌套(<association>单个对象、<collection>集合)。PageHelper简化分页:引入依赖后,在Mapper方法前调用PageHelper.startPage(pageNum, pageSize),后续查询自动生成分页SQL并封装PageInfo结果,无需手动计算。

Mybatis基础

Mybatis基础

MyBatis 是一款优秀的持久层框架,支持自定义 SQL、存储过程和高级映射,简化 JDBC 操作。它可通过 XML 或注解配置,实现对象与数据库记录的映射。基础操作包括:导入 MyBatis 依赖和 MySQL 驱动,配置数据源(如 Druid 连接池),创建实体类,在 Mapper 层使用 @Select、@Insert、@Delete、@Update 注解编写静态 SQL。参数占位符 #{} 实现预编译,防止 SQL 注入。增删改方法默认返回影响行数;新增支持主键返回;查询时需注意字段名与属性名一致,可通过别名、@Results 注解或开启驼峰转换解决。条件查询也通过注解实现。总体而言,MyBatis 提供了灵活、高效的数据库操作方式。

RestTemplate

RestTemplate

RestTemplate 是 Spring 框架提供的同步 HTTP 客户端工具,封装底层实现并简化 RESTful 请求。其核心功能包括:支持所有 HTTP 方法(GET、POST、PUT、DELETE 等);自动通过 HttpMessageConverter 序列化/反序列化;支持 URI 模板和路径变量;默认对 4xx/5xx 状态码抛出异常;允许添加拦截器实现统一处理(如日志、认证)。 快速使用时,需注入 RestTemplate Bean(可切换底层客户端为 HttpClient 或 OkHttp)。主要方法包括: - GET:`getForObject()` 和 `getForEntity()`,支持无参、路径参数、RESTful 参数。 - POST:`postForObject()`、`postForEntity()` 和 `postForLocation()`,支持表单、对象、JSON 提交。 - PUT/DELETE:对应 `put()` 和 `delete()`。 - 通用方法:`exchange()` 可发送任意 HTTP 方法并获取完整响应。 高级场景可通过 `ClientHttpRequestInterceptor` 在请求头注入 traceId 等链路追踪信息。常见异常如 `no suitable HttpMessageConverter` 需手动添加 `text/html` 媒体类型支持。

OkHttp

OkHttp

OkHttp 是 Square 公司开发的高性能 HTTP 客户端库,专为 Android 和 Java 应用设计。其核心优势包括:内置连接池、支持 HTTP/2 和 WebSocket、自动 GZIP 压缩,提供简洁的链式调用 API,同步/异步请求灵活适配。扩展性强,支持自定义拦截器、Cookie 持久化、缓存控制、Multipart 请求、连接池配置、失败重连策略及异步请求(可通过 CompletableFuture 或自定义回调处理结果)。快速入门演示了 GET/POST/PUT/DELETE 请求的简单实现。适用于 Android 应用和 Java 后端服务,也是 Retrofit 等流行库的底层实现。

HttpURLConnection

HttpURLConnection

HttpURLConnection 是 Java 标准库(`java.net` 包)中用于 HTTP 请求的抽象类,支持 GET、POST、PUT、DELETE 等方法,其子类 `HttpsURLConnection` 可用于 HTTPS。使用步骤包括:通过 URL 创建连接、设置请求方法、添加请求头、处理请求参数(GET 参数附在 URL 后,POST 等通过输出流发送)、读取响应(成功用 `getInputStream()`,失败用 `getErrorStream()`)并释放连接。常用方法涉及连接参数配置(如超时、缓存)、请求头设置、响应内容获取(状态码、消息、头字段等)。代码示例演示了四种请求方式的完整流程。注意事项包括:显式指定字符编码、处理异常、HTTPS 默认支持(自签名证书需额外配置),以及频繁请求时建议使用更高级的 HTTP 库。

ApacheHttpClient

ApacheHttpClient

Apache HttpClient 是 Java 中强大的 HTTP 客户端库,支持 HTTP/1.1 和 HTTP/2,提供同步与异步请求方式。其核心组件包括 HttpClient、HttpRequest、HttpResponse 及 EntityUtils,并内置连接池、灵活的 API 和拦截器扩展。快速入门演示了 GET、POST、PUT 和 DELETE 请求的简单实现。扩展功能涵盖:设置连接/读取超时、添加自定义请求头、使用连接池管理连接、自定义请求重试策略(如对无响应异常重试)、通过 HttpAsyncClient 实现异步请求,以及通过请求/响应拦截器添加公共头、记录日志或自定义逻辑。该库适用于高并发、低延迟的网络通信场景。

Swagger3详解

Swagger3详解

本文介绍了Swagger 3(即OpenAPI 3.0+)作为标准化RESTful API设计、文档化和测试的开放规范。其核心功能包括统一API描述、自动生成交互式文档、代码生成及接口测试。Swagger规范于2015年捐赠给Linux基金会并更名为OpenAPI,至今已发展为行业标准。SpringDoc是Spring Boot与OpenAPI 3.0集成的核心工具,可自动解析Spring注解生成文档,并与Swagger UI结合,支持零配置启动和注解驱动。文章还涵盖快速入门步骤、常用注解(@Tag、@Operation、@Parameter、@Schema等)、配置方法(信息配置、分组、环境隔离、排序),以及整合Knife4j框架,后者提供更丰富的UI和增强功能。

Swagger2详解

Swagger2详解

Swagger2 是一款基于 OpenAPI 2.0 规范的 API 文档自动生成工具,通过注解自动生成交互式文档页面,便于前后端协作。在 Spring Boot 中,借助 Springfox 集成 Swagger2,只需添加 `springfox-swagger2` 和 `springfox-swagger-ui` 依赖,编写配置类(`@EnableSwagger2`),并在 Controller 和实体类上使用 `@Api`、`@ApiOperation`、`@ApiModelProperty` 等注解即可。配置类支持分组、全局参数(如 Token 认证)、路径过滤等高级功能。为改善界面体验,可替换为 `swagger-bootstrap-ui`(访问 `/doc.html`)。注意 Spring Boot 2.6+ 需在 `application.yml` 中设置 `spring.mvc.pathmatch.matching-strategy=ant_path_matcher` 以兼容 Springfox。

Rust介绍及安装

Rust介绍及安装

Rust 是一门由 Mozilla 开发、2015 年发布 1.0 版的系统编程语言,核心特点包括:通过所有权系统实现内存安全(无需垃圾回收)、零成本抽象、编译时防止数据竞争、性能与 C/C++ 相当,并拥有 Cargo 等丰富工具链。应用涵盖系统编程、Web 开发、嵌入式、区块链、游戏等领域。安装推荐使用 rustup:Windows 可访问 rustup.rs 或运行 `winget install Rustlang.Rustup`;macOS/Linux 执行 `curl -sSf https://sh.rustup.rs | sh`。验证安装运行 `rustc --version` 和 `cargo --version`。第一个 Hello World 程序可用 `rustc main.rs` 编译,或使用 `cargo new` 创建项目后运行 `cargo run`。代码中 `fn main()` 为入口,`println!` 是宏。推荐 VS Code 搭配 rust-analyzer 等扩展,常用命令有 `cargo build/run/check/test`。

Spring AOP

Spring AOP

本文介绍了AOP(面向切面编程)的核心概念与实现方法。AOP通过将共性功能(如日志、事务)抽取为通知,与切入点绑定形成切面,实现对业务方法的增强。快速入门步骤包括:导入依赖、定义连接点(原始操作)、制作通知类、定义切入点(如`execution`或`@annotation`表达式)、绑定通知与切入点、将通知类注册为Spring Bean并开启AOP支持。AOP执行流程中,Spring容器启动后根据切入点匹配目标方法,匹配成功则生成代理对象,调用时执行增强逻辑。 进阶部分涵盖切入点表达式(execution与@annotation)、通知类型(前置、后置、环绕等,环绕通知需通过`ProceedingJoinPoint`调用原始方法)、通知顺序以及获取参数、返回值、异常信息的方法。文章还强调了环绕通知需处理返回值与异常,以及通过`@Pointcut`复用切入点表达式。

© 2026 日志记录