简介
如今的开发,对于数据库的curd,很多人都是使用mybatis,说到mybatis就不得不提mybatis的增强工具:mybatis-plus 。
mybatis的增强版,只做增强不做改变。博主大飞表示,如果你使用mybatis而不懂mybatis-plus,那你out了,五星推荐。
由来
最近老有人问我,在mybatis的使用中,通过下划线命名变量的总是不起作用。
今天就来扒扒mybatis-plus中的一个关于下划线解析出问题的事情,懂的略过。
关于下划线不兼容问题,其实不是mybatis-plus的错,这个问题在mybatis中由来已久,先说说出现的经过吧
创建变量
以图书表为例创建实体类
@Data
@TableName("book")
public class Book extends Model<Book> implements Serializable {
private static final long serialVersionUID = 1L;
@TableId("id")
private String id;
@TableField("book_name")
private String book_name;//名称
private String bookAuthor;//作者
private String book_type;//文章类型
private String book_category;//类型
private Date create_date;//出版日期
在以上代码中,通过三种方式创建变量:
一种是直接通过TableField将数据库字段和变量字段名对应。
一种是不加对应关系直接通过下划线命名变量(与数据库字段名一直,可以不加字段声明);
第三种是驼峰命名法命名。
通过运行发现只有id和bookAuthor有数据,其他全部为空,神奇的空指针。
原因
具体原因还是要mybatis来背这个锅。
因为mybatis使用下划线代表大写,查询出来的字段如果带下划线,会自动转换为大写。
当然这个是可以通过设置去掉的,不建议这么搞。其实这些已经能满足所有要求了,为什么要和mybatis抢下划线呢,对吧,需要的就去官网或者网上查找吧,啊哈哈哈。。。。