命名策略

郭胜凯2025/11/21

说明

在使用Smart Mybatis时, 命名策略决定了Java实体类和数据库表及字段之间的默认映射关系。合理的命名策略可以提高代码的可读性和维护性。

我们可以通过修改全局配置来设置命名策略, 以application.yml为例:

spring:
  mybatis:
    smart:
      naming-convention: underline_upper

以上配置将全局命名策略设置为驼峰转大写下划线。这也是Smart Mybatis的默认命名策略。

可选命名策略

Smart Mybatis支持以下几种命名策略:

取值描述
underline_upper驼峰转大写下划线 (如 userName 转为 USER_NAME)
underline_lower驼峰转小写下划线 (如 userName 转为 user_name)
as_is不进行任何转换, 使用Java实体原名称作为数据库表和列名

示例

假设我们有一个实体类UserProfile:

public class UserProfile extends PO {
    @ID
    private Long id;
    private String userName;
    private String emailAddress;
    // Getter和Setter方法
}

根据不同的命名策略, 该实体类将映射到不同的数据库表和字段:

命名策略映射的表名映射的字段名
underline_upperUSER_PROFILEID, USER_NAME, EMAIL_ADDRESS
underline_loweruser_profileid, user_name, email_address
as_isUserProfileid, userName, emailAddress

自定义表名

如果默认的表命名不符合项目需求,可以通过 @TableName 声明表名:

@TableName("custom_user_table")
public class UserProfile extends PO {
    @ID
    private Long id;
    private String userName;
    private String emailAddress;
}

表前缀和命名策略仍会应用到 @TableName.value:在 underline_upper 下会转换为大写,在 underline_lower 下会转换为小写,并在缺少前缀时补上 table-prefix

3.0.2

当前版本的 @TableField.value 会被命名策略重新计算,不能可靠覆盖遗留列名。详情见字段映射与列类型版本说明

Last Updated 11/23/2025, 9:16:20 PM