【框架】mybatis --输出映射 resultType&resultMap

1.resultType

使用resultType进行输出映射,只有查询出来的列名和pojo中的属性名一致,该列才可以映射成功。

如果查询出来的列名和pojo中的属性名全部不一致,没有创建pojo对象。

只要查询出来的列名和pojo中的属性有一个一致,就会创建pojo对象。

 

1.1、输出简单类型

需求

用户信息的综合查询列表总数,通过查询总数和上边用户综合查询列表实现分页。

mapper.xml

【框架】mybatis --输出映射 resultType&resultMap

mapper.java

【框架】mybatis --输出映射 resultType&resultMap

测试代码

【框架】mybatis --输出映射 resultType&resultMap

小结

查询出来的结果集只有一行且一列,可以使用简单类型进行输出映射。

 

1.2、输出pojo对象和pojo列表

不管是输出的单个pojo对象还是一个列表(list中包括pojo),在mapper.xml中resultType指定的类型是一样的。

在mapper.java指定的方法返回值类型不一样:

         1.2.1、输出单个pojo对象,方法返回值是单个对象类型

【框架】mybatis --输出映射 resultType&resultMap

         1.2.2、输出pojo对象list,方法返回值是List<Pojo>

 

【框架】mybatis --输出映射 resultType&resultMap

生成的动态代理对象中是根据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关联起来

【框架】mybatis --输出映射 resultType&resultMap

指定resultMap的id,将resultmap和statement关联起来

3、定义接口

public User findUserByIdResultMap(int id);