SQL映射文件
MyBatis 真正强大之处在于SQL映射语句,也是他的魅力所在。相对于它强大的功能,SQL映射文件的配置却非常简单。下面是关于SQL映射文件的几个顶级元素配置:
- mapper:映射文件的根元素节点,只有一个属性namespace(命名空间)作用如下:1.用于区分不同的mapper,全局唯一,2.绑定DAO接口,即面向接口编程。当namespace绑定某一接口之后,可以不用写该接口的实现类,MyBatis会通过接口的完整限定名查找对应的mapper配置来执行SQL语句。因此namespace的命名空间必须跟接口同名。
- cache:配置给定命名空间的缓存。
- cache-ref:从其他命名空间引用缓存配置。
- resultMap:用来描述数据库结果集和对象的对应关系。
- sql:可以重用的SQL块,也可以被其他语句引用。
- insert:映射插入语句。
- update:映射更新语句。
- delete:映射删除语句。
- select:映射查询语句。
关于MyBatis的SQL映射文件中的mapper元素的namespace属性有如下要求:
1. namespace的命名空间必须跟某个DAO接口同名,同属于DAO层,故代码结构上,映射文件与该DAO接口应放在同一package下,并且习惯上都是以Mapper结尾(UserMapper.java,UserMapper.xml)。
2. 在不同的mapper文件中,子元素的id可以相同,MyBatis通过namespace和子元素的id联合区分。接口中的方法与映射文件中SQL语句id相对应。