Bootstrap

使用mybatis-plus遇到的坑

简介

如今的开发,对于数据库的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抢下划线呢,对吧,需要的就去官网或者网上查找吧,啊哈哈哈。。。。

 

 

 

 

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;