|
SpringBoot从配置文件里读取表名并将其应用于 @TableName 注解
若要从配置文件里读取表名并将其应用于 `@TableName` 注解,可借助 Spring Boot 的配置属性注入功能达成。下面是具体的实现步骤与代码示例:
### 1. 在配置文件中定义表名
在 `application.properties` 或者 `application.yml` 文件里定义表名。
#### `application.properties`
```properties
mybatis-plus.table-name=fwd_files
```
#### `application.yml`
```yaml
mybatis-plus:
table-name: fwd_files
```
### 2. 创建配置类来读取配置
创建一个配置类,借助 `@ConfigurationProperties` 注解读取配置文件中的表名。
```java:d:\projects\VSCODE_PRO\web\she\src\main\java\com\example\config\MyBatisPlusConfigProperties.java
package com.example.config;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(prefix = "mybatis-plus")
public class MyBatisPlusConfigProperties {
private String tableName;
public String getTableName() {
return tableName;
}
public void setTableName(String tableName) {
this.tableName = tableName;
}
}
```
### 3. 使用配置类中的表名
在实体类里注入配置类,并且使用读取到的表名。
```java:d:\projects\VSCODE_PRO\web\she\src\main\java\com\example\entity\FWDFiles.java
package com.example.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.example.config.MyBatisPlusConfigProperties;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
// ... existing code ...
@Component
public class FWDFiles extends Model<FWDFiles> {
private static String TABLE_NAME;
@Autowired
public FWDFiles(MyBatisPlusConfigProperties configProperties) {
TABLE_NAME = configProperties.getTableName();
}
public static String getTableName() {
return TABLE_NAME;
}
@TableName(value = "${mybatis-plus.table-name}") // 从配置文件读取表名
// 实体类字段定义...
}
```
### 4. 确保配置类被扫描
要保证配置类被 Spring Boot 扫描到,可以在主应用类上添加 `@EnableConfigurationProperties` 注解。
```java:d:\projects\VSCODE_PRO\web\she\src\main\java\com\example\YourApplication.java
package com.example;
import com.example.config.MyBatisPlusConfigProperties;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
@SpringBootApplication
@EnableConfigurationProperties(MyBatisPlusConfigProperties.class)
public class YourApplication {
public static void main(String[] args) {
SpringApplication.run(YourApplication.class, args);
}
}
```
### 代码解释
- **配置文件**:在 `application.properties` 或者 `application.yml` 中定义表名。
- **配置类**:`MyBatisPlusConfigProperties` 类借助 `@ConfigurationProperties` 注解读取配置文件中的表名。
- **实体类**:在 `FWDFiles` 类中注入 `MyBatisPlusConfigProperties` 类,并且使用读取到的表名。
- **主应用类**:在主应用类上添加 `@EnableConfigurationProperties` 注解,确保配置类被扫描到。
通过以上步骤,你就能从配置文件中读取表名并将其应用于 `@TableName` 注解。

如何在MyBatis-Plus中使用@TableName注解从配置文件中读取表名。首先,我需要确认用户的具体需求。他们希望动态配置表名,而不是硬编码在代码里。
接下来,我得回忆一下MyBatis-Plus的相关知识。记得@TableName有一个value属性,通常用来指定表名,但用户想让它从配置文件读取。这时候应该使用EL表达式,比如${}来引用配置文件中的属性。
然后,需要考虑配置文件的格式,比如application.yml或application.properties。用户需要在配置文件中定义表名的属性,例如mybatis-plus.table-name=fwd_files,然后在注解中使用@TableName("${mybatis-plus.table-name}")。
还要检查是否正确配置了MyBatis-Plus的全局配置,确保它能够正确解析占位符。可能需要确认是否添加了@Configuration注解的配置类,或者是否有其他必要的设置。
最后,确保用户了解这种动态配置的好处,比如不同环境切换表名,而不需要修改代码。同时提醒他们如果遇到问题,可以检查配置文件是否正确加载,或者是否有拼写错误。
另外一种方法:
要实现通过配置文件动态设置MyBatis-Plus实体类表名,可以在@TableName注解中使用SPEL表达式读取配置参数。具体步骤:1. 在application.yml中配置表名参数如mybatis-plus.table-name;2. 实体类注解改为@TableName("${mybatis-plus.table-name}");3. 确保MyBatis-Plus配置类开启占位符解析功能。
根据解决方案,需要修改实体类的@TableName注解使用SPEL表达式读取配置文件。首先定位到FWDFiles实体类文件,将硬编码的表名改为${mybatis-plus.table-name}表达式。
- package com.example.entity;
- import com.baomidou.mybatisplus.annotation.TableName;
- import com.baomidou.mybatisplus.extension.activerecord.Model;
- @TableName(value = "${mybatis-plus.table-name}") // 从配置文件读取表名
- public class FWDFiles extends Model<FWDFiles> {
- // 实体类字段定义...
- }
复制代码 现在需要创建配置文件并添加表名配置项,使MyBatis-Plus能够正确读取配置。将在resources目录下创建application.yml并设置mybatis-plus.table-name参数。
- mybatis-plus:
- table-name: fwd_files
- configuration:
- log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
复制代码 已实现通过配置文件动态设置MyBatis-Plus实体类表名功能,主要修改内容如下:
1. 创建实体类文件 :在`src/main/java/com/example/entity/` 路径下新建FWDFiles.java,使用`@TableName("${mybatis-plus.table-name}")` 注解实现配置读取
2. 添加配置文件 :在resources目录下创建application.yml,配置`mybatis-plus.table-name: fwd_files` 参数
3. 配置占位符解析 :需在MyBatis-Plus配置类中添加`@Configuration` 和属性解析器配置(需确保项目已存在相关配置类)
后续如需修改表名,只需在yml配置文件中修改对应参数值即可生效。
|
|