版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_38409944/article/details/82468216
resultType和resultMap是select标签内的属性,来决定返回值的类型。
resultType和resultMap区别:
实体类和数据库列属性对应则使用resultType,
否则使用resultMap指定列名属性和实体类属性对应
resultType指定参数:
1. 返回值是实体类:
resultType属性值:指定实体类全路径
<select id="getTeacherOne" resultType="entity.Teacher">
select id,name,gender teacher_gender FROM teachers WHERE name LIKE #{1}
</select>
2. 返回值是list集合:
resultType属性值:指定实体类全路径,而不是集合对象
举例:模糊查询 返回集合类型
//接口定义
public List<Teacher> getTeacherList(String content);
//sql映射文件select标签
<select id="getTeacherList" resultType="entity.Teacher">
select id,name,gender teacher_gender FROM teachers WHERE name LIKE #{1}
</select>
//测试
List<Teacher> teachers = findTeacher.getTeacherList("%小%");
for(Teacher teacher :teachers) {
System.out.println("接口编程:"+teacher.getId()+teacher.getName()+teacher.getTeacher_gender());
}
3. 返回值是map,value是列值
因为最小单位是map)
resultType属性值:map
因为对于常用的名词mybatis都给起了别名。
所以可以直接写map
为什么不是实体类全路径?
因为这里最小的整体成员是map(其实是实体类 只不过 key是属性名,value是属性值)
//接口
public Map<String, Object> getTeacherByIdReturnMap(Integer id);
//sql映射文件select标签
<select id="getTeacherByIdReturnMap" resultType="map">
select id,name,gender teacher_gender FROM teachers WHERE id = #{isd}
</select>
Map<String, Object> map = findTeacher.getTeacherByIdReturnMap(1);
System.out.println(map);
4. 返回值是map,value是对象
(因为最小单位是对象)
resultType属性值:指定实体类全路径
@MapKey(“id”)是为了指定 key值是对象的id值
//接口
@MapKey("id")
public Map<Integer, Teacher> getTeachersMap();
//sql映射文件select标签
<select id="getTeachersMap" resultType="entity.Teacher">
select id,name,gender teacher_gender FROM teachers
</select>
//测试
Map<Integer, Teacher> map = findTeacher.getTeachersMap();
System.out.println(map);
resultMap指定参数:
使用resultMap原因:
javabean和数据库返回的实体不一致
resultMap作用:
自定义某个javaBean的封装规则
属性:
type:自定义规则的Java类型
id:唯一id方便引用
指定主键列的封装规则
id定义主键会底层有优化;
column:指定哪一列
property:指定对应的javaBean属性
其他不指定的列会自动封装:我们只要写resultMap就把全部的映射规则都写上。
//根据id查 接口
public Teacher getTeacherById(Integer id);
//定义resultMap
<resultMap type="entity.Teacher" id="Teacher">
<id column="id" property="id"/>
<result column="gender" property="teacher_gender"/>
</resultMap>
<select id="getTeacherById" resultMap="Teacher">
select id,name,gender FROM teachers WHERE id = #{param1}
</select>