Configuration.xml中配置的内容和顺序如下:
以下内容可以有, 也可以没有, 但是有的时候, 顺序必须是这样的:
- properties(属性)
- settings(全局配置参数)
- typeAliases(类型别名)
- typeHandlers(类型处理器)
- objectFactory(对象工厂)
- plugins(插件)
- environments(环境集合属性对象)
- environment(环境子属性对象)
- transactionManager(事务管理)
- dataSource(数据源)
- environment(环境子属性对象)
- mappers(映射器)
properties属性的配置
- 可以直接在properties节点里面定义属性:
- 也可以在classpath路径下创建一个properties文件, 加载到properties属性中
1.创建db.properties文件
jdbc.url=jdbc:mysql://localhost:3306/mybatis
jdbc.driver=com.mysql.jdbc.Driver
jdbc.username=root
jdbc.password=root
2.在properties节点中加载
3.加载属性文件的同时, 还可以在properties节点中定义属性, 当两者中有相同名字的属性时, 使用的是属性文件中的内容!
typeAliases节点配置: 给pojo类型起一个别名, 方便使用!
- 给指定的一个类型起别名, 使用时不区分大小写
- 给指定的包下的所有类型起别名,别名就是类名, 使用时不区分大小写
- 默认已支持的别名:
别名 | 映射的类型 |
---|---|
_byte | byte |
_long | long |
_short | short |
_int | int |
_integer | int |
_double | double |
_float | float |
_boolean | boolean |
string | String |
byte | Byte |
long | Long |
short | Short |
int | Integer |
integer | Integer |
double | Double |
float | Float |
boolean | Boolean |
date | Date |
decimal | BigDecimal |
bigdecimal | BigDecimal |
map | Map |
mappers(映射器)
Mapper配置的几种方法:
- 使用相对于classpath的资源
如:
- 使用mapper接口类路径
如:
注意:此种方法要求mapper接口名称和mapper映射文件名称相同,且放在同一个目录中。
- 注册指定包下的所有mapper接口
如:
注意:此种方法要求mapper接口名称和mapper映射文件名称相同,且放在同一个目录中。
resultMap
如果sql查询字段名和pojo的属性名不一致,可以通过resultMap将字段名和属性名作一个对应关系 ,resultMap实质上还需要将查询结果映射到pojo对象中。
- 在mapper.xml文件中:
- 说明
:此属性表示查询结果集的唯一标识,非常重要。如果是多个字段为复合唯一约束则定义多个 。
Property:表示User类的属性。
Column:表示sql查询出来的字段名。
Column和property放在一块儿表示将sql查询出来的字段映射到指定的pojo类属性上。
:普通结果,即pojo的属性。
动态SQL语句
- if语句: 满足条件的时候拼接sql语句
select * from user
where 1=1
and id=#{id}
and username like '%${username}%'
- where语句: 删除多余的and
select * from user
and id=#{id}
and username like '%${username}%'
- foreach: 循环
ids是一个id的集合:
#{id}
说明:
collection: 指定要遍历的集合
open: 要生成的语句以什么内容开始
close:要生成的语句以什么内容结束
item: 遍历到集合中的元素
separator: 每个元素之间的分隔符
- SQL片段: 提取公共SQL语句, 方便复用
select * from books
resultMap定义一对一, 一对多关系
- 一对一
说明
association:表示进行关联查询单条记录
property:表示关联查询的结果存储在com.gongxm.mybatis.po.Orders的user属性中
javaType:表示关联查询的结果类型
:查询结果的user_id列对应关联对象的id属性,这里是 表示user_id是关联查询对象的唯一标识。
:查询结果的username列对应关联对象的username属性。
- 一对多
说明
collection部分定义了用户关联的订单信息。表示关联查询结果集
property="orders":关联查询的结果集存储在User对象的上哪个属性。
ofType="orders":指定关联查询的结果集中的对象类型即List中的对象类型。此处可以使用别名,也可以使用全限定名。
及 的意义同一对一查询。