mybatisplus在生成的sql语句里的表名加上双引号怎么设置
时间: 2024-03-06 17:50:20 浏览: 362
在 MyBatis Plus 中,在生成的 SQL 语句中加上双引号可以通过设置全局的 SQL 解析处理器来实现,具体操作步骤如下:
1. 定义一个 SQL 解析处理器类,继承 `ISqlParser` 接口,并实现其中的 `processSelect` 方法,该方法会在生成 SELECT 语句时被调用。
```java
public class TableKeywordSqlParser implements ISqlParser {
@Override
public SqlInfo processSelect(MetaObject metaObject, String sql) {
// 在 SQL 语句中找到所有的表名,并在表名两边加上双引号
sql = sql.replaceAll("FROM\\s+(\\w+)", "FROM \"$1\"");
sql = sql.replaceAll("JOIN\\s+(\\w+)", "JOIN \"$1\"");
sql = sql.replaceAll("INTO\\s+(\\w+)", "INTO \"$1\"");
sql = sql.replaceAll("UPDATE\\s+(\\w+)", "UPDATE \"$1\"");
sql = sql.replaceAll("DELETE\\s+FROM\\s+(\\w+)", "DELETE FROM \"$1\"");
// 返回新的 SQL 语句和参数信息
return SqlInfo.newInstance().setSql(sql).setParamList(new ArrayList<>());
}
}
```
2. 在 MyBatis Plus 的配置类中,将该 SQL 解析处理器添加到全局 SQL 解析处理器列表中。
```java
@Configuration
public class MyBatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
// 添加 SQL 解析处理器
interceptor.addInnerInterceptor(new TableKeywordSqlParser());
return interceptor;
}
}
```
这样,在使用 MyBatis Plus 进行 SQL 查询时,生成的 SQL 语句中的表名就会被自动加上双引号。需要注意的是,这种方式可能会影响 SQL 的性能,因此应该仔细评估其对系统的影响。
阅读全文