当前使用版本(必填,否则不予处理)
3.3.2
该问题是如何引起的?(确定最新版也有问题再提!!!)
MySQL 数据表:
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`t_key` varchar(100) DEFAULT NULL,
mybatis-plus 实体类:
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@TableField("t_key")
private String key;
重现步骤(如果有就写完整)
当使用如下代码时会报错,其生成的sql会有关键字的别名:
LambdaQueryWrapper<SSetting> wrapper = Wrappers.lambdaQuery();
if (null != setting && null != setting.getKey()) {
wrapper.eq(SSetting::getKey, setting.getKey());
}
return list(wrapper);
生成的sql为:
select id, t_key as key from tb_s_settings
上述sql生成的字段别名t_key as key是关键字,执行失败!
当把字段t_key改成key,@TableField("t_key") 改成 @TableField("key") 却又不会又问题。
所以,当使用lambda查询时,如果数据库表字段名不是关键字,实体类的成员是关键字时,会生成一个关键字的别名,导致sql出错,有没有什么办法解决这种情况的问题。
当然,直接改实体类的成员名是一种方法。mybatis-plus 有没有一个设置可以解决这个问题:别名是关键字时SQL执行出错
Comment From: pengyusong
Duplicate of #