resultMap自定义映射---8.3.1. 解决列名(表中的字段名称)和实体类中的属性名不一致
1.1.1.1. 步骤一:将驼峰匹配注释掉 --------------测试完成后仍然 回来开启 其他地方可能用到
一旦注释掉驼峰匹配,那么再通过queryUserById查询的结果中,用户名就无法封装了,此时我们可以尝试使用ResultMap来解决这个问题。
1.1.1.2. 步骤二:在UserMapper.xml中配置resultMap
<!--
resultMap标签:可以自己配置对象属性和表字段的映射(不仅仅是驼峰规则的映射)
type属性:结果集的封装类型
id属性:唯一标识
autoMapping属性:如果不配置,默认为true。对其他属性进行自动映射。
-->
<resultMap type="User" id="userResultMap" autoMapping="true">
<!-- id标签:配置主键映射,column:表中的字段名称,property:属性名称 -->
<id column="id" property="id"/>
<!-- 可以用来配置普通类型字段和属性映射(非复杂类型) -->
<result column="user_name" property="userName"/>
</resultMap>
1.1.1.3. 步骤三:在statement中引用自定义resultMap
<!--
select:查询的statement,用来编写查询语句。
id:语句的唯一标识,使用动态代理之后,必须和mapper接口中的方法名称一致。
resultType:配置返回的结果集类型
parameterType:参数类型,可以省略。
-->
<!-- resultMap:引用自定义结果集的唯一标识 -->
<select id="queryUserById" resultMap="userResultMap">
select * from tb_user where id = #{id}
</select>
测试无误
注意:测试完记得将驼峰命名的配置重新开启,因为其他的测试方法还要用。