cbc426d99a9c0917d51a5a601649665c44f56abb.svn-base 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. //package org.jeecg.config.mybatis;
  2. //
  3. //import com.baomidou.mybatisplus.extension.plugins.tenant.TenantSqlParser;
  4. //import net.sf.jsqlparser.expression.BinaryExpression;
  5. //import net.sf.jsqlparser.expression.Expression;
  6. //import net.sf.jsqlparser.expression.Parenthesis;
  7. //import net.sf.jsqlparser.expression.operators.conditional.AndExpression;
  8. //import net.sf.jsqlparser.expression.operators.conditional.OrExpression;
  9. //import net.sf.jsqlparser.expression.operators.relational.*;
  10. //import net.sf.jsqlparser.schema.Column;
  11. //import net.sf.jsqlparser.schema.Table;
  12. //import net.sf.jsqlparser.statement.select.*;
  13. //
  14. //import java.util.List;
  15. //
  16. ///**
  17. // * 复写租户条件
  18. // */
  19. //public class JeecgTenantParser extends TenantSqlParser {
  20. //
  21. // /**
  22. // * @param expression
  23. // * @param table
  24. // * @return
  25. // */
  26. // protected Expression processTableAlias(Expression expression, Table table) {
  27. // String tableAliasName;
  28. // if (table.getAlias() == null) {
  29. // tableAliasName = table.getName();
  30. // } else {
  31. // tableAliasName = table.getAlias().getName();
  32. // }
  33. //
  34. // // in
  35. // if (expression instanceof InExpression) {
  36. // InExpression in = (InExpression) expression;
  37. // if (in.getLeftExpression() instanceof Column) {
  38. // setTableAliasNameForColumn((Column) in.getLeftExpression(), tableAliasName);
  39. // }
  40. //
  41. // // 比较操作
  42. // } else if (expression instanceof BinaryExpression) {
  43. // BinaryExpression compare = (BinaryExpression) expression;
  44. // if (compare.getLeftExpression() instanceof Column) {
  45. // setTableAliasNameForColumn((Column) compare.getLeftExpression(), tableAliasName);
  46. // } else if (compare.getRightExpression() instanceof Column) {
  47. // setTableAliasNameForColumn((Column) compare.getRightExpression(), tableAliasName);
  48. // }
  49. //
  50. // // between
  51. // } else if (expression instanceof Between) {
  52. // Between between = (Between) expression;
  53. // if (between.getLeftExpression() instanceof Column) {
  54. // setTableAliasNameForColumn((Column) between.getLeftExpression(), tableAliasName);
  55. // }
  56. // }
  57. // return expression;
  58. // }
  59. //
  60. // private void setTableAliasNameForColumn(Column column, String tableAliasName) {
  61. // column.setColumnName(tableAliasName + "." + column.getColumnName());
  62. // }
  63. //
  64. // /**
  65. // * 默认是按 tenant_id=1 按等于条件追加
  66. // *
  67. // * @param currentExpression 现有的条件:比如你原来的sql查询条件
  68. // * @param table
  69. // * @return
  70. // */
  71. // @Override
  72. // protected Expression builderExpression(Expression currentExpression, Table table) {
  73. // final Expression tenantExpression = this.getTenantHandler().getTenantId(true);
  74. // Expression appendExpression;
  75. // if (!(tenantExpression instanceof SupportsOldOracleJoinSyntax)) {
  76. // appendExpression = new EqualsTo();
  77. // ((EqualsTo) appendExpression).setLeftExpression(this.getAliasColumn(table));
  78. // ((EqualsTo) appendExpression).setRightExpression(tenantExpression);
  79. // } else {
  80. // appendExpression = processTableAlias(tenantExpression, table);
  81. // }
  82. // if (currentExpression == null) {
  83. // return appendExpression;
  84. // }
  85. // if (currentExpression instanceof BinaryExpression) {
  86. // BinaryExpression binaryExpression = (BinaryExpression) currentExpression;
  87. // if (binaryExpression.getLeftExpression() instanceof FromItem) {
  88. // processFromItem((FromItem) binaryExpression.getLeftExpression());
  89. // }
  90. // if (binaryExpression.getRightExpression() instanceof FromItem) {
  91. // processFromItem((FromItem) binaryExpression.getRightExpression());
  92. // }
  93. // } else if (currentExpression instanceof InExpression) {
  94. // InExpression inExp = (InExpression) currentExpression;
  95. // ItemsList rightItems = inExp.getRightItemsList();
  96. // if (rightItems instanceof SubSelect) {
  97. // processSelectBody(((SubSelect) rightItems).getSelectBody());
  98. // }
  99. // }
  100. // if (currentExpression instanceof OrExpression) {
  101. // return new AndExpression(new Parenthesis(currentExpression), appendExpression);
  102. // } else {
  103. // return new AndExpression(currentExpression, appendExpression);
  104. // }
  105. // }
  106. //
  107. // @Override
  108. // protected void processPlainSelect(PlainSelect plainSelect, boolean addColumn) {
  109. // FromItem fromItem = plainSelect.getFromItem();
  110. // if (fromItem instanceof Table) {
  111. // Table fromTable = (Table) fromItem;
  112. // if (!this.getTenantHandler().doTableFilter(fromTable.getName())) {
  113. // plainSelect.setWhere(builderExpression(plainSelect.getWhere(), fromTable));
  114. // if (addColumn) {
  115. // plainSelect.getSelectItems().add(new SelectExpressionItem(new Column(this.getTenantHandler().getTenantIdColumn())));
  116. // }
  117. // }
  118. // } else {
  119. // processFromItem(fromItem);
  120. // }
  121. // List<Join> joins = plainSelect.getJoins();
  122. // if (joins != null && joins.size() > 0) {
  123. // joins.forEach(j -> {
  124. // processJoin(j);
  125. // processFromItem(j.getRightItem());
  126. // });
  127. // }
  128. // }
  129. //
  130. //}