Mybatis映射
1.1 映射文件语法:
<mapper namespace="UserMapper">
<select id="getUserList" …
……
</select>
</mapper>
1.2 namespace:命名空间
namespace的命名必须跟某个接口同名
1.3 id: 命名空间中唯一的标识符
接口中的方法与映射文件中的SQL语句id一一对应
1.4 parameterType: 参数类型
传入SQL语句的参数类型
2个参数推荐使用注解@parm("")
3个参数或以上推荐使用包装实体类
1.5 resultType:返回值类型
SQL语句返回值类型的完整类名或别名
1.6 parameterType 基础数据类型/复杂数据类型
parameterType
(1)基础数据类型:
int、String、Date等
只能传入一个,通过#{参数名}即可获取传入的值
(2)复杂数据类型:
Java实体类、Map等
通过#{属性名}或者#{map的keyName}即可获取传入值
1.7 为什么使用resultMap?
数据库字段信息与对象属性不一致
1.8 resultMap 描述如何将结果集映射到Java对象
resultType:直接表示返回类型
基本数据类型
复杂数据类型
resultMap:对外部resultMap的引用
应用场景:
复杂的联合查询,自由控制映射结果
二者不能同时存在,本质上都是Map数据结构
2. resultMap
核心思想
id
一般对应数据库中该行的主键id,设置此项可提高MyBatis性能
result
映射到JavaBean的某个“简单类型”属性
association
映射到JavaBean的某个“复杂类型”属性,比如JavaBean类
collection
映射到JavaBean的某个“复杂类型”属性,比如集合
association
复杂的类型关联,一对一
内部嵌套
映射一个嵌套JavaBean属性
属性
property:映射数据库列的实体对象的属性
javaType:完整Java类名或者别名
resultMap:引用外部resultMap
子元素
id
result
property:映射数据库列的实体对象的属性
column:数据库列名或者别名
2.1 关键点
<resultMap id="userlist" type="cn.kgc.entity.User">
<result property="id" column="id"></result>
<result property="UserroleName" column="roleName"></result>
</resultMap>
property:实体类中的字段名
column:数据库中的字段名