springboot+mybatis-plus 数据表字段是关键字的问题解决

项目从SpringMVC+MyBatis升级到SpringBoot+MyBatis-Plus,遇到数据库字段名为关键字导致的SQL语法错误。通过在JavaBean中添加注释解决字段名冲突,并记录解决方案及避免使用关键字作为字段名的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目里有个数据表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里加个注释即可解决问题

 特记录下。还有就是数据表、字段定义不要使用一些关键字~~~~~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lamyuu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值