【MyBatis中处理数据库字段名和属性名不一致的问题】

7.处理数据库字段名和属性名不一致的问题

例如:现在有一个数据库表的字段为emp_id,emp_name,age,gender

​ 而现在对应的pojo中的类的属性名为empId,empName,age,gender,数据库是下划线,而属性名为驼峰规则,如果直接在select *,会发现id,和name为空。

①方法一:使用别名

在jdbc中,我们学过sql语句中使用别名来获取对应的数据库中的值。

<!--Emp getEmpById(@Param("empId") Integer empId);-->
<select id="getEmpById" resultType="Emp">
    select emp_id empId,emp_name empName,age,gender from t_emp where emp_id = #{empId}
</select>

②方法二:使用mybatis的配置文件,settings中设置

mybatis-config文件下的settings下设置将下划线映射为驼峰,key使用的是mapUnderscoreToCamelCase,表示是否开启驼峰命名自动映射,即从经典数据库列名 A_COLUMN 映射到经典 Java 属性名 aColumn,value设置为true表示开启,默认为false

<settings>
    <!--将下划线映射为驼峰-->
    <setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>

这样我们就可以使用*来获取到数据库对应的值了。

③方法三:使用resultMap来处理

注意:resultMap标签的用法

resultMap标签:是用来设置自定义映射

  • 属性:
    • id:表示自定义映射的唯一标识,在select中的resultMap进行选择映射
    • type:查询的数据映射的实体类类型
  • 子标签:
    • id:设置主键的映射关系
      • 属性:column:数据库的的字段名 property:设置映射关系的实体类的属性名
    • result:设置普通字段的映射关系
    • association:专门来处理多对一的映射关系,看下列8.2的讲解
      • 属性:property:设置要处理的属性的属性名 javaType:设置要处理的属性的类型
      • 属性:select:设置下一步sql语句的唯一标识 column:将当前sql查询出来的某个字段值设置为下一步sql语句的条件参数值 用于分步查询
      • 子标签用法:也是使用id和result子标签进行主键字段和普通字段的映射
<resultMap id="empResultMap" type="Emp">
    <id column="emp_id" property="empId"></id>
    <result column="emp_name" property="empName"></result>
    <result column="age" property="age"></result>
    <result column="gender" property="gender"></result>
</resultMap>
<!--Emp getEmpById(@Param("empId") Integer empId);-->
<select id="getEmpById" resultMap="empResultMap">
    select * from t_emp where emp_id = #{empId}
</select>
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值