【框架】mybatis --输出映射 resultType&resultMap
1.resultType
使用resultType进行输出映射,只有查询出来的列名和pojo中的属性名一致,该列才可以映射成功。
如果查询出来的列名和pojo中的属性名全部不一致,没有创建pojo对象。
只要查询出来的列名和pojo中的属性有一个一致,就会创建pojo对象。
1.1、输出简单类型
需求
用户信息的综合查询列表总数,通过查询总数和上边用户综合查询列表实现分页。
mapper.xml
mapper.java
测试代码
小结
查询出来的结果集只有一行且一列,可以使用简单类型进行输出映射。
1.2、输出pojo对象和pojo列表
不管是输出的单个pojo对象还是一个列表(list中包括pojo),在mapper.xml中resultType指定的类型是一样的。
在mapper.java指定的方法返回值类型不一样:
1.2.1、输出单个pojo对象,方法返回值是单个对象类型
1.2.2、输出pojo对象list,方法返回值是List<Pojo>
生成的动态代理对象中是根据mapper方法的返回值类型确定是调用selectOne(返回单个对象调用)还是selectList (返回集合对象调用 ).
2、ResultMap
如果查询出的列名和pojo属性不一致,通过定义一个resultMap对列名和pojo属性名之间做一个映射关系
1、定义resultMap
2、使用resultMap作为statement的输出映射类型
定义resultMap
<resultMap type="user" id="userResultMap">
<id column="id_" property="id"/>
<result column="username_" property="username"/>
</resultMap>
type:resultMap最终映射的java对象类型,可以使用别名
id:是对resultMap的唯一标识
<id> 表示表中主键id和类中属性id的映射
column查询出来的列名
properties 指定的pojo类型的属性名
result对普通属性映射定义
2、将resultmap和statement关联起来
指定resultMap的id,将resultmap和statement关联起来
3、定义接口
public User findUserByIdResultMap(int id);