MyBatis Plus使用中无法映射到实体类的问题

 在写项目是遇到一个与实体类MyBatis Plus无法映射的问题。

导致我一直查询出来的数据包装进实体类都是null,看mp日志是可以查出数据的,所以问题的冠军就是在于映射进实体类这一块。

这是我的实体类

@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("viptype")
public class VipType {

    @TableId(type = IdType.AUTO)
    private int vipType_id;
    private String vip_name;
    private Double vip_price;
    private int vip_time;
    private String vip_drsc;

}

 

这是数据库的中表的字段

create table viptype
(
    vipType_id int auto_increment
        primary key,
    vip_name    varchar(50)   null,
    vip_price   decimal(8, 2) null,
    vip_time    int           null,
    vip_drsc    varchar(255)  null
);

 可以看到实体类和数据库的字段名字都是一模一样的,这要在mybatis框架中是可以映射进去的,而我用的是mp框架并且用到了mp的注解,所以我实体类中的小驼峰命名的字段会被解读成用“_”分开的字段,例如实体类中的vipType_id被解读成vip_type_id,而数据库里面是没有这个字段的,所以导致映射不进去。

解决方案一:按照mp的规定写好对应的实体类

我这里为了规范把数据库和实体类都做了修改,如下

@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("viptype")
public class VipType implements Serializable {

    @TableId(value = "vip_type_id")
    private int vipTypeId;
    @TableField("vip_name")
    private String vipName;
    @TableField("vip_price")
    private Double vipPrice;
    @TableField("vip_time")
    private int vipTime;
    @TableField("vip_drsc")
    private String vipDrsc;
}

create table viptype
(
    vip_type_id int auto_increment
        primary key,
    vip_name    varchar(50)   null,
    vip_price   decimal(8, 2) null,
    vip_time    int           null,
    vip_drsc    varchar(255)  null
);

以此做到根据mp的规则对代码进行规范修改。

方案二:修改mp的规则,使原来的代码任然可以用。

mp中自动映射的规则之一:

字段名下划线命名方式和实体类属性小驼峰命名方式映射 -> 字段名 vip_name  实体类属性名 vipName

如果不想使用这种自动映射,则可以在yml文件中设置

mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    map-underscore-to-camel-case: false

#map-underscore-to-camel-case: true 支持下划线到驼峰的映射
#map-underscore-to-camel-case: false 不支持下划线到驼峰的映射

将其设为false就可以了。

总结:这个问题加深了我对mp框架的理解与使用,当然mp的自动映射规则不止这一种,感兴趣的可以了解下。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值