一、MyBatis简介
1.1简介
简化数据库操作的一个框架,需要自己写sql语句。
1.2持久层框架对比

1.3快速入门
Mapper接口和MapperXML文件;相当于之前的Dao和Dao层的实现。

mybatis使用流程:
1.导入依赖
2.准备实体类
3.创建一个mapper接口,mapper.xml文件
4.准备mybatis配置文件,连接数据库信息
5.使用mybatis api进行数据库查询[sqlsessionfactory,sqlsession]
ibatis方法:后被淘汰


Mybatis的用法:相当于在ibatis上加了层封装。
mybatis底层仍然调用ibatis只不过有固定的模式。

二、MyBatis基本使用
2.1向SQL语句传参
mybatis日志输出配置:logimpl,在mybatis-comfig.xml中

sql语句如何接受输入的参数:#{key},${key}

2.2数据输入
场景1:传入单个简单类型,key随便写什么都行,一般写参数名

传入一个实体对象,


传入多个值:两个方法,@param指定名字,arg0位置参数



map类型传入:
mapper接口中不允许重载!!!


2.3数据输出
输出概述

单个简单类型,resulttype属性,指定输入类型

mybatis提供了常用的72种类的别名,可以在官网看。
自己定义的类,如何定义别名?单独定义和批量定义

返回实体类对象:

上面也可以写别名employee,前提是定义了。

其中select emp_id empId这里每次都要为列名取别名,太麻烦,如何设置自动映射?mybattis.xml

返回map类型,resulttype直接设置就行

返回list类型:返回值是集合,resulttype不需要指定集合,只需要指定泛型即可。

返回主键值【主键回显】
自增长主键:
修改后事务提交才会修改数据库。


非自增长主键:


实体类属性和数据库字段对应关系


2.4CRUD练习

测试的时候,每个测试方法都要写创建sqlsession,可以把这些重复的提取到一个方法中,用@BeforeEach注解,即可在每个测试方法前调用。同样也有@AfterEach
2.5mapperXML标签总结
三、MyBatis多表映射
3.1多表映射概念
嵌套的,一个类的属性是另一个类,在resultmap里写映射就行。



对一,属性中包含对方对象
对多,属性中包含对方对象集合

3.2对一映射

3.3对多映射
<association property 对一的对象属性赋值
<collection property 对多的集合属性赋值

3.4多表映射总结
一个小优化:

让resultmap自动映射result标签,只用写id,association,collection就行。

n个表的映射可逐步拆解为2个表的映射。
四、MyBatis动态语句
4.1动态语句需求和简介

4.2if和where标签


4.3set标签

4.4trim标签

4.5choose/when/otherwise标签
这个只能有1个满足,if标签可以有多个满足

4.6foreach标签
遍历操作


4.7sql片段

if和where完成多条件动态判断,where可以自动加where关键字,以及去掉and,or
set 更新的时候配合if,去掉多的分割都好
trim可以替换where,set,可以自动去掉或加上某些前缀后缀
choose 有多个条件,但只想要一个条件满足
foreach 遍历,做批量操作
sql片段,相当于提取
五、MyBatis高级扩展
5.1Mapper批量映射优化

com.qwe.pojo如果创建文件这么写是一层文件夹,如何多层?
在输入文件夹名的时候,分隔符用/,com/qwe/pojo
5.2插件和分页插件PageHelper


5.3逆向工程和MybatisX插件



六、MyBatis总结

474

被折叠的 条评论
为什么被折叠?



