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

相关推荐
没有bug.的程序员3 小时前
分布式缓存架构:从原理到生产实践
java·分布式·缓存·架构·分布式缓存架构
沐知全栈开发3 小时前
Ruby 条件判断
开发语言
_hermit:3 小时前
【从零开始java学习|第二十二篇】集合进阶之collection
java·学习
锥栗3 小时前
【Redis】【缓存】理解缓存三大问题:缓存穿透、缓存击穿与缓存雪崩及解决方案
java·后端·面试
_码力全开_3 小时前
JavaScript从入门到实战 (1):JS 入门第一步:它是什么?能做什么?环境怎么搭?
开发语言·前端·javascript·新人首发
9号达人3 小时前
泛型+函数式:让策略模式不再是复制粘贴地狱
java·后端·面试
captain3763 小时前
Java线性表
java·开发语言
tuokuac3 小时前
Java String类中的lastIndexOf方法的应用场景
java·开发语言
Biomamba生信基地3 小时前
R语言绘图神器| ggplot2与其基本用法介绍
开发语言·信息可视化·r语言·生信·医药