mybatis plus 的动态表名的配置
时间: 2023-09-28 19:03:25 浏览: 54
MyBatis Plus 支持动态表名的配置,可以通过在 SQL 中使用占位符 `{}` 或 `#{}` 来指定动态表名,然后在代码中通过传入参数来替换占位符。
下面是一个示例:
```java
@Mapper
public interface UserMapper {
@Select("SELECT * FROM ${tableName} WHERE id = #{id}")
User selectById(@Param("tableName") String tableName, @Param("id") Long id);
}
```
在上面的代码中,`tableName` 参数指定了动态表名,然后在 SQL 中使用 `${tableName}` 占位符来引用它。另外,`id` 参数是普通的参数,使用 `#{}` 占位符来引用。
使用时,可以通过传入 `tableName` 参数来指定具体的表名,例如:
```java
@Autowired
private UserMapper userMapper;
User user = userMapper.selectById("user_table", 123L);
```
在上面的代码中,传入的 `tableName` 参数为 `"user_table"`,会被替换到 SQL 中的 `${tableName}` 占位符中,从而实现动态表名的配置。
相关问题
mybatis plus怎么实现动态表名
Mybatis Plus 可以通过使用 `TableNameParser` 接口来实现动态表名。你需要自定义一个实现了 `TableNameParser` 接口的类,并在 Mybatis Plus 的配置中将其注册为自定义的 `TableNameParser` 实例。然后,你就可以在你的 mapper 接口中使用 `@TableName` 注解来动态指定表名了。
例如:
```java
@Mapper
public interface UserMapper {
@Select("SELECT * FROM ${tableName} WHERE id = #{id}")
User findById(@Param("tableName") String tableName, @Param("id") Long id);
}
```
在调用 `findById` 方法时,你可以传入动态的表名,Mybatis Plus 会将表名替换到 SQL 语句中并执行。
需要注意的是,在使用动态表名时,你需要自己确保表名是合法的并且拼写正确,Mybatis Plus 不会做任何校验。
动态表名插件 mybatis-plus
Mybatis-Plus是Mybatis的增强工具,在开发中有很多使用场景,其中就包括动态表名插件,也就是说,在Mybatis-Plus中,动态表名插件可以实现一个SQL语句的多表关联查询。
动态表名插件是Mybatis-Plus的一种增强插件,在查询过程中,通过钩子的方式,动态生成SQL语句,以实现动态表名的查询。这种方法不仅可以实现多表关联查询,而且还能避免SQL注入攻击。
使用动态表名插件,需要在Mybatis-Plus的配置文件中添加相应的配置,具体操作步骤如下:
1.在pom.xml文件中引入Mybaits-Plus和相关的依赖。
```xml
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.1.2</version>
</dependency>
```
2.在application.yml文件中添加Mybatis-Plus相关的配置信息。
```yml
mybatis-plus:
mapper-locations: classpath*:/mapper/**/*.xml
type-aliases-package: com.example.model
configuration:
map-underscore-to-camel-case: true
sql-injector: com.baomidou.mybatisplus.extension.injector.LogicSqlInjector
global-config:
db-config:
logic-delete-value: 1
logic-not-delete-value: 0
```
3.编写Mapper.xml文件,使用动态表名插件。
```xml
<select id="findUserByName" resultMap="user">
SELECT *
FROM ${tableName}
WHERE name = #{name}
</select>
```
以上就是使用动态表名插件实现多表关联查询的方法,需要注意的是,在使用动态表名插件时,需要特别小心SQL注入攻击。