Compare commits

...

2 Commits

Author SHA1 Message Date
zgj 09a2c20ee7 Merge remote-tracking branch 'origin/书籍中心zgj' into 书籍中心zgj
8 months ago
SmileToCandy 0d2940f9d9 readme 修改
8 months ago

@ -19,10 +19,13 @@ import com.baomidou.mybatisplus.plugins.parser.tenant.TenantSqlParser;
import net.sf.jsqlparser.expression.Expression;
import net.sf.jsqlparser.expression.LongValue;
// 表示这是一个配置类Spring会扫描这个类并将其中带有@Bean注解的方法返回的对象注册为Bean
@Configuration
// 配置MyBatis Mapper接口的扫描路径会扫描指定包及其子包下的所有Mapper接口方便Spring与MyBatis整合时能找到对应的Mapper
@MapperScan("com.tamguo.modules.*.dao*")
public class MybatisPlusConfig {
// 创建并返回一个PerformanceInterceptor实例用于拦截MyBatis执行的SQL语句可用于性能监控例如记录SQL执行时间等
@Bean
public PerformanceInterceptor performanceInterceptor() {
return new PerformanceInterceptor();
@ -31,63 +34,78 @@ public class MybatisPlusConfig {
/**
* mybatis-plus<br>
* http://mp.baomidou.com<br>
* PaginationInterceptorMyBatis Plus
*/
@Bean
public PaginationInterceptor paginationInterceptor() {
PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
paginationInterceptor.setLocalPage(true);// 开启 PageHelper 的支持
// 设置开启PageHelper的支持以便更好地兼容一些分页相关的操作习惯等情况
paginationInterceptor.setLocalPage(true);
/*
* SQL <br>
* 1 cookie SQL <br>
* 1cookie SQL <br>
* SQLSQLSQL
*/
List<ISqlParser> sqlParserList = new ArrayList<>();
TenantSqlParser tenantSqlParser = new TenantSqlParser();
// 设置租户处理器用于定义获取租户ID、租户ID对应的列名以及判断是否过滤表等逻辑
tenantSqlParser.setTenantHandler(new TenantHandler() {
// 返回租户ID对应的表达式这里固定返回值为1L表示租户ID为1
@Override
public Expression getTenantId() {
return new LongValue(1L);
}
// 返回租户ID在数据库表中对应的列名此处为"course_id"
@Override
public String getTenantIdColumn() {
return "course_id";
}
// 判断是否对指定表进行过滤这里返回true表示需要进行过滤操作具体过滤逻辑可根据实际情况调整
@Override
public boolean doTableFilter(String tableName) {
// 这里可以判断是否过滤表
return true;
}
});
// 将配置好的租户SQL解析器添加到SQL解析器列表中
sqlParserList.add(tenantSqlParser);
// 将包含租户相关配置的SQL解析器列表设置到分页拦截器中使得分页拦截器在处理SQL时能应用多租户逻辑
paginationInterceptor.setSqlParserList(sqlParserList);
// 以下过滤方式与 @SqlParser(filter = true) 注解等效
// 配置SQL解析过滤器用于根据具体的MappedStatement的ID来决定是否对SQL进行过滤这里是针对特定的自定义查询进行过滤
// paginationInterceptor.setSqlParserFilter(new ISqlParserFilter() {
// @Override
// public boolean doFilter(MetaObject metaObject) {
// MappedStatement ms = PluginUtils.getMappedStatement(metaObject);
// // 过滤自定义查询此时无租户信息约束【 麻花藤 】出现
// // 过滤自定义查询此时无租户信息约束【 麻花藤 】出现即如果是指定的这个查询方法则返回true表示过滤该查询不应用租户相关逻辑
// if ("com.baomidou.springboot.mapper.UserMapper.selectListBySQL".equals(ms.getId())) {
// return true;
// }
// return false;
// }
// });
return paginationInterceptor;
}
// 创建并返回一个MetaObjectHandler实例用于在执行MyBatis相关操作时自动填充一些公共字段等元数据处理逻辑具体填充逻辑在返回的MyMetaObjectHandler类中实现
@Bean
public MetaObjectHandler metaObjectHandler(){
public MetaObjectHandler metaObjectHandler() {
return new MyMetaObjectHandler();
}
/**
* sql
* ISqlInjector使LogicSqlInjectorSQLMyBatis Plus
*/
@Bean
public ISqlInjector sqlInjector(){
public ISqlInjector sqlInjector() {
return new LogicSqlInjector();
}
}
Loading…
Cancel
Save