跳转至

使用 MyBatis-Plus,实体类用了数据库的保留字,即使使用了 @TableField 注解,也会查询失败

约 141 个字 14 行代码 预计阅读时间 1 分钟

问题

MySQL 数据库某表中有字段名为 is_group,根据阿里巴巴的 Java 规范,在实体类中应命名为 group

Spring Boot 项目中,使用 MyBatis-Plus,实体类如下:

1
2
3
4
5
@Data
public class Entity {
    @TableField(value = "is_group")
    private Integer group;
}

Mapper.xml 如下:

1
2
3
4
<resultMap id="BaseResultMap" type="...">
  <!-- ... -->
  <result property="group" column="is_group" jdbcType="TINYINT"/>
</resultMap>

查询执行报错,提示 SQL 错误,发现拼接的 SQL 如下:

SELECT    ...,is_group AS group    FROM ...         WHERE (...)

解决方案

如果用 application.yml 配置,可以配置如下:

1
2
3
4
mybatis-plus:
  global-config:
    db-config:
        property-format: "`%s`"

参见