Mybatis中解决实体类和表字段映射问题解决方法

  在Mybatis中有时候可能会出现我们表字段和实体类名映射不一致的问题,这样查询的数据往往是为null。
  假设现在有一张表如下:
在这里插入图片描述
  该表对应的实体类如下:

@Data
public class Emp {
    // 员工编号
    private Integer id;

    // 员工姓名
    private String name;

    // 员工年龄
    private Integer age;

    // 所属部门
    private Integer deptId;
}

  我们简单写一个查询语句如下:
在这里插入图片描述
  我们请求方法,得到结果如下:
在这里插入图片描述
   可以看deptId属性是为空的,此时表字段和实体类字段是没有映射上导致的问题。

总结以下方法

1、将不对应的字段起别名

在这里插入图片描述
  将dept_id起别名之后和实体类字段对应,即可查询。
  (不推荐,如果数据库字段多,比较麻烦)

2、定义resultMap

  此标签可以解决数据库字段与实体类的属性不一致时,使用该标签进行一一映射。
在这里插入图片描述
  我们在select标签中指定上resultMap的唯一标识(empPojo)即可。
resultMap标签的属性含义如下:
1、id:唯一标识
2、type:表示对应哪个实体类
3、column:表示数据库字段的名称
4、property:表示实体类字段的名称

3、Mybatis开启驼峰命名

  按照规范命名,我们将数据库字段的下划线的后一个字母转成大写。
  例如:数据库的字段为dept_id,那么java实体类中为deptId。
  在yml或properties中配置开启驼峰命名:

mybatis:
  configuration:
    map-underscore-to-camel-case: true # 开启驼峰命名 (下划线)

以上三种解决办法都可以,各取所需

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值