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

相关推荐
小蒜学长5 小时前
基于小程序的绘画作品创作与分享社区系统的设计与实现(代码+数据库+LW)
java·spring boot·后端·绘画作品·创作分享社区
金玉满堂@bj5 小时前
# Java文件打包成可执行JAR包(两种方式:原生javac\+jar命令 / Maven)
java
事圆则缓5 小时前
Java 异常、日志与 Android 崩溃定位
java
砍材农夫6 小时前
spring|spring web|拦截器、过滤器、aop
java·spring boot·spring·spring cloud
小此方7 小时前
「C++AI大模型接入SDK」(一) API接入与本地两种方式对比、API Key获取、API报文详解与简单API的构建
开发语言·c++·人工智能
wuyk5558 小时前
Python实战项目02:学生成绩管理系统(控制台|CSV导出|完整落地)
开发语言·python
mldong13 小时前
一个 App,十三套后端:手机审批端 uni-jeeflow-app 开源了
java·架构
tqs_1234514 小时前
MySQL RR隔离级别死锁|Gap间隙锁、临键锁,订单并发范围查询死锁根因方案
java
逆境不可逃15 小时前
Pi Agent 学习笔记:多个工具怎样并行执行
java
浪子明X15 小时前
十六位账本怎样发现传输差错:Internet Checksum 生活类比
开发语言