今天在使用MybatisX-Generator插件和lombok插件创建实体类的时候,发现lombok帮助我们生成的实体类居然报错,于是我便在网上找了好久都没有解决方案,最后,自己去代码中慢慢找,最后终于找到了问题所在。
先看看实体类中的爆红代码块:
发现居然是没有get方法,上面明明有@Data注释,而且也引进了插件,为什么报错呢?下面就解释一下爆红的原因
首先看我数据库的需要生成实体类的表中的字段:
再看看勾选lombok后利用MybatisX-Generator插件帮助我们生成的实体类:
@TableName(value ="com_user")
@Data
public class ComUser implements Serializable {
/**
* 用户id
*/
@TableId(type = IdType.AUTO)
private Integer uId;
/**
* 登录名
*/
private String uLoginname;
/**
* 用户名
*/
private String uUsername;
/**
* 真实姓名
*/
private String uRealname;
发现 当我们数据库中的某个字段有下划线'_'时,MybatisX-Generator帮助我们生成的实体类中与之对应的变量会将这个下划线后的第一个字母大写。例如上面我数据库的字段交u_id,生成的实体类中的变量就叫uId,在爆红代码段发现他自动生成调用的是getuId(),并没有将我的变量名第一个字母大写,写成getUId().。但是我们通过@Data注解生成的get和set是将我们的变量的首字母进行大写的,所以在调用get方法的时候找不到对应的方法。
解决方案:不用@Data注解,自己通过idea生成get和set,或者是将对应的get方法改名。