【JAVA - SSM】之MyBatis输出映射

        MyBatis中的输出映射有两种:resultType和resultMap。


1、resultType

        使用resultType进行结果映射时,只有当查询结果中有至少一列的名称和resultType指定的POJO的某个属性名称相同时,才会映射成功。如果查询出来的列名和POJO中的属性名全部不一致,就不会映射成任何POJO对象(解决这个问题可以使用下面介绍的resultMap映射)。

        resultType的类型可以是HashMap,这样查询出来的列名就是HashMap中的key。


2、resultMap

        MyBatis使用resultMap可以完成高级输出结果的映射。如果查询出来的列名和POJO中的属性名不一致,可以通过定义一个resultMap对列名和POJO属性名之间做一个映射关系。resultMap的具体代码如下:

定义resultMap的代码:
<!-- 自定义ResultMap:自定义ResultMap的作用是将查询出来的列名和pojo的属性名做一个映射关系 -->
<!-- type是最终映射到的pojo对象类型,可以是属性名;id是对ResultMap的唯一标识 -->
<resultMap type="emp" id="employeeMap">
	<!-- id标签和result标签中都有column和property两个属性,前者是查询出来的列名,后者是映射到的pojo中的属性名 -->
	<!-- id表示查询结果中的主键列的映射关系 -->
	<id column="eid" property="empNo" />
	<!-- result表示查询结果中的普通列的映射关系 -->
	<result column="username" property="eName" />
</resultMap>
Statement中的代码:
<!-- 使用resultMap输出员工信息,resultMap的属性值是自定义的resultMap的id -->
<!-- 注意:如果resultMap定义在其他mapper文件中,则需要在resultMap的id前面加上所在mapper文件的namespace值 -->
<select id="findEmployeeListWithResultMap" resultMap="employeeMap">
	SELECT empno eid, ename username FROM EMP
</select>
Mapper接口中的代码:
List<Employee> findEmployeeListWithResultMap() throws Exception;
测试代码:
// 使用resultMap输出员工信息
@Test
public void testFindEmployeeListWithResultMap() throws Exception {
	SqlSession session = factory.openSession();
	EmployeeMapper mapper = session.getMapper(EmployeeMapper.class);
	List<Employee> list = mapper.findEmployeeListWithResultMap();
	for (Employee e : list) {
		System.out.println(e);
	}
}


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值