一、导包+配置文件+pojo类
1、jar包:mybatis的核心包和依赖包+连接数据库的jar包
2、日志文件(可以不需要)
3、SqlMapConfig.xml配置
<?xml version="1.0" encoding="UTF-8" ?>
4、pojo类
// 用户pojo类,对应用户表
二、结果映射(resultMap)
- 作用:pojo类属性名和数据库中查询结果名不同时,用resultMap来手动映射。
- 注意:当resultMap只映射简单pojo类时(也就是此时pojo类不存在嵌套其他pojo或者不存在集合),resultMap里可以只写出不同名的属性,其余同名的属性会自动进行映射
<!--
三、动态sql
(只测试了常用的where,if,foreach。而choose, when, otherwise类似java中的switch,when对应case,otherwise对应default,且用的相对少,就没有测试)
1、where+if
(1)where标签:有sql子句的情况下才会插入where。而且,若整个sql语句的开头为 and 或者是 or ,where 元素也会将它们去除
(2)if标签:test属性值是判断的条件
<!-- 抽取出重复的sql片段,使用include标签引用它,可以达到重用的目的 -->
2、foreach(遍历标签,构建IN条件语句时用的多)
属性介绍:
- collection:可迭代的对象。可以直接是数组,集合(此时collection属性值就是array和list),也可以是包装在pojo类中的数组和集合(这时用包装类对应的的引用属性)
- item:本次迭代获取的元素
- open:在前面添加的sql片段
- close:在结尾处添加的sql片段
- separator:指定遍历的元素之间使用的分隔符
<select
四、关联查询
1、原始的DBUtils解决多表关联查询:
将多表查询的结果用MapListHandler(一行对应一个map(键为列名),许多map又被封装进一个list集合中)封装起来,遍历这个list集合,在利用beanUtils工具将每个map封装为简单的javabean(多个),再将这些javabean进行对应的嵌套。
2、MyBatis解决多表关联查询(用resultMap):
(1)一对一:一个pojo里面嵌套了另一个pojo
(1.1) association标签:关联一个复杂类型(比如pojo)
属性介绍:
- javaType:指定关联的这个复杂类型的java类型
- property:pojo中对应的属性名
(1.2) mapper的配置
<!-- ==================一对一查询,订单表对应用户表(订单表为中心)============== -->
(1.3) 数据库的查询结果
![d6eda100d74d22bef1258cd3f25ffb9c.png](https://img-blog.csdnimg.cn/img_convert/d6eda100d74d22bef1258cd3f25ffb9c.png)
(2)一对多:一个pojo里面嵌套了集合的pojo
(2.1)collection标签:关联一个复杂类型的集合
属性介绍:
- ofType:这个复杂类型集合里装的对象的具体类型
- property:pojo中对应的属性名
(2.2) mapper的配置
<!-- ================== 一对多查询,用户表对应订单表(用户表为中心) ============= -->
(2.3) 数据库的查询结果
![b712f5460f0ef76fc59c0578f615f378.png](https://img-blog.csdnimg.cn/img_convert/b712f5460f0ef76fc59c0578f615f378.png)
(3)注意:
存在pojo嵌套时,数据库中查出来的列的名字和pojo中属性名相同时,也不能省略。
五、Mapper接口+测试类
1、映射文件对应的接口
package
2、测试类
package