解决Mybatis-plus @TableField不生效问题

事件回归

实体类定义字段中是带下划线的

sql中字段也是带下划线的

mybatiplus默认是打开自动转换下划线 所以导致字段为null  

  • @TableField(value="字段名") 这个注解并不生效
mybatis-plus: 
#mapper扫描
  mapper-locations: classpath*:mapper/**/*.xml
  configuration:
  # 关闭自动驼峰转换
    map-underscore-to-camel-case: false
  # 打印sql
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

 

@TableField失效的几种情况总结

总结

1、只加了@TableField,没有实现MetaObjectHandler

2、MetaObjectHandler实现类没有加到spring容器中

在这里插入图片描述

3、被@TableField标记的字段,没有get、set方法

4、被@TableField标记的字段的类型,与绑定时传入的类型不一致,比如字段类型为String,传入Integer,这种情况会失效

后记

我觉得mybatis plus在字段绑定这里做的有点不友好,只按照正确逻辑处理,没有增加错误反馈、以及反例报错

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程宝库

在新建实体类时想直接序列化,遇到注解不起作用的问题,后来发现是少了一个依赖,真是无语。@Table(name = "tb_user")public class User implements Seria ...