Mybatis中查询结果中返回值是resultType和resultMap

版权声明:本文为博主原创文章,未经博主允许不得转载。 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>

猜你喜欢

转载自blog.csdn.net/qq_38409944/article/details/82468216
今日推荐