Skip to content

动态指定数据库表名前缀(MyBatis)

🏷️ MyBatis

MyBatis 中可以通过全局的表前缀(table prefix)实现一定程度的动态指定表名。

假如表名为 t_xx_game ,对应 entity 的注解如下:

java
@TableName("t_xx_game")

通过设置 mybatis-plus.global-config.db-config.table-prefix 属性可以指定一个全局的表前缀:

yaml
mybatis-plus:
  global-config:
    db-config:
      table-prefix: t_xx_

指定表前缀后,entity 的注解可以修改为如下形式:

java
@TableName(value = "game", keepGlobalPrefix = true)

如此一来,不同的 application 可以重复的使用相同的 entity 来访问不同的表。

有些不太方便的是,只能指定一个表前缀,而且是固定值。由于一般表名使用 t_ 开头,视图使用 v_ 开头,这就导致无法使用同一个 table prefix 。另外如果有多个不同的表前缀的话,也不大方便使用。