框架--MyBatis

一、MyBatis 基础认知

1. 框架的基本概念

2. ORM 框架的定义与作用

3. MyBatis 的核心定位与价值

二、MyBatis 入门实践

1. 开发环境搭建

2. 持久层接口与映射文件创建

3. 持久层接口方法的测试

4. MyBatis 核心对象与工作流程解析

5. SqlSession操作数据库的方式

6. Mapper 动态代理的实现原理

可以看到,MapperProxy调用了MapperMethod的execute方法定义了代理方式,且底层调用的是SqlSession的方法,根据映射文件标签不同调用不同的SqlSession方法。

三、CRUD 核心操作(增删改查)

1. 数据新增

2. 数据修改

优化测试类

我们发现MyBatis的测试方法在操作数据库前都需要获取代理对象,操作数据库后都需要释放资源,可以利用Junit的前置后置方法,优化测试类代码。

这样Junit就会自动执行获取代理对象和释放资源的方法。

3. 数据删除

4. 按 ID 精确查询

5. 模糊查询

6. 分页查询

分页查询时,Sql语句使用limit关键字,需要传入开始索引和每页条数两个参数。MyBatis的多参数处理有以下方式:

01,顺序传参

02,@Param传参

03,POJO传参

04,Map传参

7. 聚合查询(统计总数、求和等)

8. 主键回填(新增时获取自动生成的主键)

四、配置文件详解

1. <properties>:属性配置(如数据库连接信息)

2. <settings>:全局行为配置(如缓存、日志等)

3. <plugins>:插件集成(如分页插件)

4. <typeAliases>:类型别名(简化全限定类名)

5. <environments>:环境配置(如开发、生产环境)

事务管理

连接池

6. <mappers>:映射文件/接口扫描配置

五、映射文件核心语法

1. <resultMap>:结果集映射(解决字段与属性不一致问题)

2. <sql>:SQL 片段抽取(复用重复 SQL)

3. <include>:SQL 片段引用(如上)

4. 特殊字符处理(如 `<` `>` 转义)

六、动态 SQL 技术

1. 条件判断:<if>

2. 条件拼接:<where> <set>

3. 分支选择:<choose> <when> <otherwise>

4. 集合遍历:<foreach>(批量操作常用)

七、缓存机制

1. 缓存的基本概念与价值

2. MyBatis 一级缓存(SqlSession 级缓存)

3. 一级缓存的清空策略

4. MyBatis 二级缓存(Mapper 级缓存)

八、关联查询(多表联动)

1. 一对一关联查询

2. 一对多关联查询

查询班级时,将关联的学生集合查询出来,就是一对多关联查询。

3. 多对多关联查询

4. 分解式查询(分步查询,减轻单次查询压力)

5. 延迟加载(按需加载关联数据)

九、注解式开发

1. 注解开发的环境搭建

2. 基于注解的 CRUD 操作

3. 基于注解的动态 SQL

4. 注解定义自定义映射关系

5. 注解方式配置二级缓存

6. 注解方式实现关联查询(一对一、一对多)

7. 注解开发与映射文件开发的对比分析

十、分页插件(PageHelper) (可结合实际场景,学习第三方插件对 MyBatis 分页的简化)

相关推荐
心之语歌3 小时前
基于注解+拦截器的API动态路由实现方案
java·后端
华仔啊5 小时前
Stream 代码越写越难看?JDFrame 让 Java 逻辑回归优雅
java·后端
ray_liang5 小时前
用六边形架构与整洁架构对比是伪命题?
java·架构
Ray Liang6 小时前
用六边形架构与整洁架构对比是伪命题?
java·python·c#·架构设计
Java水解6 小时前
Java 中间件:Dubbo 服务降级(Mock 机制)
java·后端
SimonKing10 小时前
OpenCode AI辅助编程,不一样的编程思路,不写一行代码
java·后端·程序员
FastBean10 小时前
Jackson View Extension Spring Boot Starter
java·后端
Seven9712 小时前
剑指offer-79、最⻓不含重复字符的⼦字符串
java
皮皮林55121 小时前
Java性能调优黑科技!1行代码实现毫秒级耗时追踪,效率飙升300%!
java
冰_河21 小时前
QPS从300到3100:我靠一行代码让接口性能暴涨10倍,系统性能原地起飞!!
java·后端·性能优化