我想要动态获取实体类型还有动态表名
时间: 2024-03-02 15:44:34 浏览: 20
根据提供的引用内容,您可以使用Mybatis-Plus的动态表名插件来实现动态获取实体类型和动态表名。您可以通过设置RequestDynamicTableNameHelper.setRequestData(dynamicTableName)来动态设置表名,然后在mapper中使用@Param注解来动态获取实体类型。具体实现可以参考以下步骤:
1.在pom.xml文件中添加Mybatis-Plus的动态表名插件依赖:
```
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-extension</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
```
2.在Mybatis-Plus的配置文件中添加动态表名插件:
```
@Configuration
public class MybatisPlusConfig {
@Bean
public DynamicTableNameInnerInterceptor dynamicTableNameInnerInterceptor() {
return new DynamicTableNameInnerInterceptor(new TableNameParser() {
@Override
public String parser(String tableName) {
return RequestDynamicTableNameHelper.getRequestData();
}
});
}
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(dynamicTableNameInnerInterceptor());
return interceptor;
}
}
```
3.在mapper中使用@Param注解来动态获取实体类型:
```
public interface DynamicDemoMapper extends BaseMapper<DynamicDemoDO> {
int insertDynamicDemo(@Param(Constants.ENTITY) DynamicDemoDO dynamicDemoDO, @Param("tableName") String tableName);
}
```
4.在service中动态设置表名并调用mapper方法:
```
@Service
public class DynamicDemoServiceImpl implements DynamicDemoService {
@Autowired
private DynamicDemoMapper dynamicDemoMapper;
@Override
public void save(String dynamicTableName, DynamicDemoDO dynamicDemoDO) {
dynamicDemoMapper.insertDynamicDemo(dynamicDemoDO, dynamicTableName);
}
}
```