SQL映射文件

SQL映射XML文件
SQL映射文件几个顶级元素,按照定义的顺序
mapper-namespace
cache-配置给定空间名的缓存配置
cache-ref-从其他命名空间引用缓存配置
resultMap用来猫叔数据库集和它对象的对应关系
sql可从用的sql语句,也可以被其他语句引用
insert映射插入语句<update id="方法名" paramterType="参数"><update/>
select映射查询语句<select id="方法名" resultType="数据类型">
update映射跟新语句
delete映射查询语句
 
mapper
namespace:命名空间
namespace和子元素的id联合保证唯一,区别不同的mapper
绑定DAO接口
namespace的命名必须跟某个接口同名
接口中的方法与映射文件中SQL语句id一一对应
示例
<mapper namespace="cn.smbms.dao.user.UserMapper">
<select id="getUserList" …
……
</select>
</mapper>
 
id
命名空间中唯一的标识符
接口中的方法与映射文件中的SQL语句id一一对应
parameterType
传入SQL语句的参数类型
resultType
SQL语句返回值类型的完整类名或别名
 
parameterType
基础数据类型
int、String、Date等
只能传入一个,通过#{参数名}即可获取传入的值
复杂数据类型
Java实体类、Map等
通过#{属性名}或者#{map的keyName}即可获取传入值
 
 
resultMap解决实体类和数据库名字对应的问题,解决连表查询问题
示例:
<resultMap type="实体类名" id="调用时用的名字">
<result property="id" column="id"/> 表示查询出来的属性对应的值赋予实体类对象的哪个属性
<result property="userCode" column="userCode"/> 从数据库查询
类名或别名
<result property="userName" column="userName"/>
<result property="userRole" column=“userRole"/>
<result property="userRoleName" column="roleName"/>
</resultMap>
<select id="getUserList" resultMap="userList" parameterType="User">一个
外部resultMap的id,表示返回结果映射到那个resultMap上
select u.*,r.roleName from smbms_user u,smbms_role r
where u.userName like CONCAT (‘%’,#{userName}, ‘%’)
and u.userRole = #{userRole} and u.userRole = r.id
</select>
 
resultType :直接表示返回类型
基本数据类型
复杂数据类型
resultMap :对外部resultMap的引用
应用场景:
数据库字段信息与对象属性不一致
复杂的联合查询,自由控制映射结果
二者不能同时存在,本质上都是Map数据结构
 
resultMap
resultMap属性
id :resultMap的唯一标识
type:java实体类
resultMap子元素
id:一般对应数据库中该行的主键,设置此项可提高MyBatis性能
result:映射到JavaBean的某个简单类型属性
association:映射到JavaBean的某个复杂属性,比如JavaBean类
collection:映射到JavaBean的某个复杂属性,比如集合
 
 
association
复杂的类型关联,一对一
内部嵌套
映射一个嵌套JavaBean属性
属性
property:映射数据库列的实体对象的属性
javaType:完整Java类名或者别名
resultMap:引用外部resultMap
子元素
id
result
property:映射数据库列的实体对象的属性
column:数据库列名或者别名
 
collection
复杂类型集合,一对多
内部嵌套
映射一个嵌套结果集到一个列表
属性
property:映射数据库列的实体对象的属性
ofType:完整Java类名或者别名(集合所包括的类型)
resultMap:引用外部resultMap
子元素
id
result
property:映射数据库列的实体对象的属性
column:数据库列名或者别名

原文地址:https://www.cnblogs.com/xiaohanzong/p/13812916.html