框架--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 分页的简化)

相关推荐
g***B7381 小时前
Java 工程复杂性的真正来源:从语言设计到现代架构的全链路解析
java·人工智能·架构
期待のcode3 小时前
MyBatisX插件
java·数据库·后端·mybatis·springboot
醇氧5 小时前
【Windows】优雅启动:解析一个 Java 服务的后台启动脚本
java·开发语言·windows
sunxunyong6 小时前
doris运维命令
java·运维·数据库
菜鸟起航ing6 小时前
Spring AI 全方位指南:从基础入门到高级实战
java·人工智能·spring
古城小栈6 小时前
Docker 多阶段构建:Go_Java 镜像瘦身运动
java·docker·golang
MapGIS技术支持6 小时前
MapGIS Objects Java计算一个三维点到平面的距离
java·开发语言·平面·制图·mapgis
Coder_Boy_6 小时前
业务导向型技术日志首日记录(业务中使用的技术栈)
java·驱动开发·微服务
程序员zgh7 小时前
C++ 互斥锁、读写锁、原子操作、条件变量
c语言·开发语言·jvm·c++
小灰灰搞电子7 小时前
Qt 重写QRadioButton实现动态radioButton源码分享
开发语言·qt·命令模式