springboot+mybatis-plus 数据表字段是关键字的问题解决
项目里有个数据表yy_key_value,字段有key、value,保存一些基本参数数据。
原来使用框架是springmvc+mybatis,sql语句写到xml文件里,包括基本的DML语句(这样不好。。),涉及到key字段时,加了``,如下
select `key`,value from yy_key_value where `key`=?
这样是没问题的(key是mysql里的关键字,直接写会报错)
但最近项目升级,使用了springboot+mybatis-plus框架,可以利用工具生成相关代码 :
public static void main(String[] args) { // 代码生成器 AutoGenerator mpg = new AutoGenerator(); // 全局配置 GlobalConfig gc = new GlobalConfig(); String projectPath = System.getProperty("user.dir") + "/one-code-generator/output"; gc.setOutputDir(projectPath + "/src/main/java"); gc.setAuthor(Author); gc.setOpen(false);
基本的DML语句直接引用即可
#service类
public interface IYyKeyValueService extends IService<YyKeyValue> { YyKeyValue findValueByKey(String key); }@Override public YyKeyValue findValueByKey(String key) { QueryWrapper<YyKeyValue> wrapper = new QueryWrapper<>(); wrapper.eq("`key`", key); // wrapper.lambda().eq(YyKeyValue::getKey, key); return yyKeyValueMapper.selectOne(wrapper); }
组装好QueryWrapper参数后,调用mybatis-plus里的BaseMapper的selectOne方法,最终会生成语句
select key,value from `key`='111'
where条件后的key可以通过 QueryWrapper指定没问题,但前面查询出来的字段名这样写会报错
[SQL] select key,value from yy_key_value where `key`='a'
[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'key,value from yy_key_value where `key`='a'' at line 1
因为是旧项目升级,如果要变更数据库字段名,会有很大的工作量。最后发现,只要在对象javabean里加个注释即可解决问题
特记录下。还有就是数据表、字段定义不要使用一些关键字~~~~~~~