在 MyBatis-Plus 中,默认情况下,实体类的主键属性名必须为 "id",如果实体类主键属性名为 其他比如"nbid",则需要进行显式的用@FileId配置或者在.XML中配置。
在使用MybatisPlus时,如果主键名是id 实体类属性名也是id
可以用@TableId来指定各种主键生成算法
那么会自动匹配,默认用的雪花算法,也就是先生成id再插入
此时主键用Long或者String类型都是可以的或者说表字段的属性是varchar或者bigint也都是可以的
用id时,实体类除了指定@FileId(type=ASSIGN_UUID)以外(原因也很明显,UUID里有asd等等字母,无法转换成Long,除非数据表字段为varchar,但是自增字段属性不允许为varchar) 其实都可以用String,当然在AUTO(自增情况下)你的保证数据库表字段主键类型是bigint 这是由于Mysql自增策略决定的,
如果指定了@TbaleId
其实你用自增 就要保证数据表主键字段为int或bigint 实体类会自动转换 String Integer Long都可以
不是自增的话String varchar 是不是看不明白,我自己都快晕了.....
#开启驼峰命名 mybatis3.0.7后自动默认开启驼峰 mybatis-plus.configuration.map-underscore-to-camel-case=true
因此上面配不配都无所谓
另外一点 因为自动开启了驼峰 因此 表字段比如说是h_name 实体类用hName
如果实体类用hname的话会报错,除非用@TableFile("h_name")去指定字段
当数据表字段含有关键字的时候,比如说
此时的查询语句 如果如下 肯定报错
表里的数据
此时正确的查询语句应该是
select id,h_name,`desc` from t_user 这个正确
select id,h_name,'desc' from t_user 这个是错误的
在用Mybatis的时候 做法是
用${xxx} 让字段带上引号(记得是这样的,可能是搞错了,待写demo确认)
先说在MybatisPlus的正确做法
使用MybatisPlus时,当实体类包含数据表中没有的字段时候 比如说
这种时候,是会出错的,因为你的实体类已经和数据表关联, 当数据表没有此字段,而实体类有的时候,不做特殊处理会报错,原因,查询时候会select xxxxx abc去查询,但是表字段没有肯定报错
或者insert更新等时候都会因为没有该字段报错
那么做法有 transient 或者@TableFiled(exist=false)
当然你可以选择比如@TableFiled(select=false),但是不保证有时候更新或者删除时候把该字段当设置属性或条件属性 (除非一些特殊需求,看实际情况)@TableFiled(exist=false)直接告诉他不存在
数据表数据 当条件是 is null 或者 is not null时候
正确sql SELECT id,h_name,age,email,`desc` FROM t_user WHERE (`desc` is null)
还是要注意 用''没有用且会返回错误数据 需要用``