mybatis ResultMap手动映射

为什么要ResultMap标签

MyBatis的查询结果集都是自动映射封装的,单行查询将数据库一条数据封装成对应的Java对象。多行查询,先将每一行封装成对象,再将每个对象添加到集合中,最后返回一个List集合对象。

但是:必须保证查询结果集的字段名和pojo对象的属性名相同,否则无法自动封装

问题: 如何解决查询结果集名称和pojo对象属性不同的映射封装?

解决方案:

  1. 使用手动映射封装 ResultMap标签

  2. 可以使用mybatis的驼峰命名法-也必须遵循一定规则才行

前提准备

复制《mybatis-crul(增删改查)》的代码

第一种:使用手动映射ResultMap标签

修改UserMapper.xml

--说明selectByPrimaryKey方法测试没有使用resultMap,结果集名称和pojo对象属性名又不同,打印结果如何。与selectAll对比
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mybatis.mapper.UserMapper">
	<!-- 单行查询 -->
     <select id="selectByPrimaryKey" parameterType="int" resultType="com.mybatis.pojo.User">
     	select id u_id,username u_name,password u_pwd,age from user where id=#{id}
     </select>
     
     <!--
     	resultMap标签作用:手动映射结果集的列名和对应pojo的属性名
     	type:需要映射的对象的类型
     	id  :唯一标识 
      -->
     <resultMap type="com.mybatis.pojo.User" id="user_map">
     	<!--
     		<id property="" column="" javaType="int" jdbcType="INTEGER"/>
     		主键列映射
     		  column:查询结果集中主键的列名
     		  property:对应pojo中主键列相应的属性名称
     		  javaType: java数据类型【可选】默认类型自动映射
     		  jdbcType: 对应的数据库类型【可选】默认类型自动映射
     	  -->
     	<id property="id" column="u_id" javaType="int" jdbcType="INTEGER"/>
     	<!--
     		<result property="" column="" javaType="int" jdbcType="INTEGER"/>
     		非主键列映射
     		  column:查询结果集中主键的列名
     		  property:对应pojo中主键列相应的属性名称
     		  javaType: java数据类型【可选】默认类型自动映射
     		  jdbcType: 对应的数据库类型【可选】默认类型自动映射
     	  -->
     	<result property="username" column="u_name"/>
     	<result property="password" column="u_pwd"/>
     <!-- 	<result property="age" column="age"/> --><!-- 相同的可以不用手动映射,mybatis会自动映射 -->
     	<!--
     		id和result从功能上没有区别,从语义上可以区分哪个是主键,哪个是非主键 
     	 -->
     </resultMap>
     
     <!-- 多行查询功能
     	  resultType:无论是单行还是多行查询的返回数据类型都是数据表对应的pojo对象
     	  resultMap:手动映射结果集
     	  	resultType和resultMap同一时刻只能二选一
       -->
     <select id="selectAll" resultMap="user_map">
     	select id u_id,username u_name,password u_pwd,age from user
     </select>
     
    
</mapper>

第二种:使用驼峰命名法

参考 mybatis settings标签 mapUnderscoreToCamelCase属性
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值