视频地址:http://edu.51cto.com/sd/be679
Mybatis的输出映射,也就是对查询结果集的一个映射,主要有两种:
1.resultType(不需要配置,可以直接用)
一般是实体类
基本类型也可以
2.resultMap(需要配置resultMap与之对应)
1.resultType返回结果是实体类,这种写法比较简单,直接贴代码,有几个要明白的地方就是:
查询出来的列名和我们的实体类的属性名必须一致,如果不一致,映射不成功。
有一个或者一个以上一致:不一致的显示为null
全部不一致:该对象不被创建
<select id="findAll" resultType="com.etc.entity.Student"> select * from t_student </select>
2.resultType返回的是基本类型,写法比较简单但是有一个要求: (resultType="java.lang.Integer")
就是要求你查询出来的结果必须只有一行且一列
3.返回的是resultMap,这种比较麻烦一点,需要配置一个resultMap与之对应(目前这里讲的是单表的,关联表的后面会说),做法主要有三步
1.写好sql
select sid sid_,name name_,sex sex_,hobbies hobbies_ from t_student
看看这个sql的查询结果
2.配置一个resultMap
<resultMap type="student" id="studentResultMap"> <!-- id:查询结果的唯一标识 不是id结果的映射 column:查询出来的列名 property:type指定的实体类的属性名 --> <id column="sid_" property="sid"/> <result column="name_" property="name"/> <result column="sex_" property="sex"/> <result column="hobbies_" property="hobbies"/> </resultMap>
3.resultMap返回的结果是你配置的resultMap的Id
resultMap总结:
1. column:查询出来的是列名 ,不是数据库的字段名(只是在开发中程序猿通常会把属性名和字段名写成一样)
2.就是映射时有一个或者多个属性对应上的时候:没对应的属性值显示为null,有对应到的就显示值
3.当没有属性匹配到该对象的时候,就是映射没有成功,那么该对象不创建