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

相关推荐
侠客行03175 小时前
Mybatis连接池实现及池化模式
java·mybatis·源码阅读
蛇皮划水怪5 小时前
深入浅出LangChain4J
java·langchain·llm
灰子学技术7 小时前
go response.Body.close()导致连接异常处理
开发语言·后端·golang
老毛肚7 小时前
MyBatis体系结构与工作原理 上篇
java·mybatis
风流倜傥唐伯虎7 小时前
Spring Boot Jar包生产级启停脚本
java·运维·spring boot
二十雨辰7 小时前
[python]-AI大模型
开发语言·人工智能·python
Yvonne爱编码7 小时前
JAVA数据结构 DAY6-栈和队列
java·开发语言·数据结构·python
Re.不晚7 小时前
JAVA进阶之路——无奖问答挑战1
java·开发语言
你这个代码我看不懂7 小时前
@ConditionalOnProperty不直接使用松绑定规则
java·开发语言
pas1367 小时前
41-parse的实现原理&有限状态机
开发语言·前端·javascript