MyBatis处理实例类与数据库表字段不同的几种方法

前言

最近备战秋招,尝试学习开发个人项目的时候遇到一些问题,写博客记录一下。本文针对SpringBoot整合MyBatis后,对数据的查询方法。
主要问题:数据库表的字段命名规范和Java实体类属性的命名规范不同,比如:
在这里插入图片描述在这里插入图片描述
所以在Mapper.xml中写查询语句偷懒的话,会出现以下情况:

在这里插入图片描述
因为查询出来的值对应的是数据库的字段dish_id,就不会赋值给Dish对象的dishId字段。
摸索之后,总结了几种解决办法。

1. 用别名 + XML

<select id="selectAll" resultType="Dish">
    select dish_id as dishId, name, time, difficulty from dish_table
</select>

2. 配置ResultMap

<select id="selectAll" resultMap="dishResultMap">
    select dish_id, name, time, difficulty from dish_table
</select>
<resultMap id="dishResultMap" type="Dish">
    <id property="dishId" column="dish_id" />
    <result property="name" column="name"/>
    <result property="time" column="time"/>
    <result property="difficulty" column="difficulty"/>
</resultMap>

3. 注解 + 别名

@Mapper
public interface DishMapper{
    @Select("select dish_id as dishId, name, time, difficulty from dish_table where dish_id = #{dish_id}")
    Dish selectById(@Param("dish_id") Integer id);
}

以上三种方法都可以解决
在这里插入图片描述

总结

一些博客说推荐用xml进行开发,因为注解只适用于简单sql,所以个人先摒弃第三种方法。
对于使用xml文件的两种方法,我认为数据库表中,如果有下划线的字段较多,ResultMap是个更好的选择,比较清晰;用别名的方法唯一好处就是偷懒,方便。所以更建议第二种方法,做个学院派的开发者。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值