eb854536457dbd59ff39c065984928284920a9db.svn-base 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. package org.jeecg.config.mybatis;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import org.jeecg.common.util.oConvertUtils;
  5. import org.mybatis.spring.annotation.MapperScan;
  6. import org.springframework.context.annotation.Bean;
  7. import org.springframework.context.annotation.Configuration;
  8. import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
  9. import com.baomidou.mybatisplus.extension.plugins.handler.TenantLineHandler;
  10. import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
  11. import com.baomidou.mybatisplus.extension.plugins.inner.TenantLineInnerInterceptor;
  12. import net.sf.jsqlparser.expression.Expression;
  13. import net.sf.jsqlparser.expression.LongValue;
  14. /**
  15. * 单数据源配置(jeecg.datasource.open = false时生效)
  16. * @Author zhoujf
  17. *
  18. */
  19. @Configuration
  20. @MapperScan(value={"org.jeecg.modules.**.mapper*"})
  21. public class MybatisPlusSaasConfig {
  22. /**
  23. * tenant_id 字段名
  24. */
  25. private static final String TENANT_FIELD_NAME = "tenant_id";
  26. /**
  27. * 哪些表需要做多租户 表需要添加一个字段 tenant_id
  28. */
  29. private static final List<String> tenantTable = new ArrayList<String>();
  30. static {
  31. tenantTable.add("demo");
  32. }
  33. @Bean
  34. public MybatisPlusInterceptor mybatisPlusInterceptor() {
  35. MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
  36. // 先 add TenantLineInnerInterceptor 再 add PaginationInnerInterceptor
  37. interceptor.addInnerInterceptor(new TenantLineInnerInterceptor(new TenantLineHandler() {
  38. @Override
  39. public Expression getTenantId() {
  40. String tenant_id = oConvertUtils.getString(TenantContext.getTenant(),"0");
  41. return new LongValue(tenant_id);
  42. }
  43. @Override
  44. public String getTenantIdColumn(){
  45. return TENANT_FIELD_NAME;
  46. }
  47. // 返回 true 表示不走租户逻辑
  48. @Override
  49. public boolean ignoreTable(String tableName) {
  50. for(String temp: tenantTable){
  51. if(temp.equalsIgnoreCase(tableName)){
  52. return false;
  53. }
  54. }
  55. return true;
  56. }
  57. }));
  58. interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
  59. return interceptor;
  60. }
  61. // /**
  62. // * 下个版本会删除,现在为了避免缓存出现问题不得不配置
  63. // * @return
  64. // */
  65. // @Bean
  66. // public ConfigurationCustomizer configurationCustomizer() {
  67. // return configuration -> configuration.setUseDeprecatedExecutor(false);
  68. // }
  69. // /**
  70. // * mybatis-plus SQL执行效率插件【生产环境可以关闭】
  71. // */
  72. // @Bean
  73. // public PerformanceInterceptor performanceInterceptor() {
  74. // return new PerformanceInterceptor();
  75. // }
  76. }