123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- //package org.jeecg.config.mybatis;
- //
- //import com.baomidou.mybatisplus.extension.plugins.tenant.TenantSqlParser;
- //import net.sf.jsqlparser.expression.BinaryExpression;
- //import net.sf.jsqlparser.expression.Expression;
- //import net.sf.jsqlparser.expression.Parenthesis;
- //import net.sf.jsqlparser.expression.operators.conditional.AndExpression;
- //import net.sf.jsqlparser.expression.operators.conditional.OrExpression;
- //import net.sf.jsqlparser.expression.operators.relational.*;
- //import net.sf.jsqlparser.schema.Column;
- //import net.sf.jsqlparser.schema.Table;
- //import net.sf.jsqlparser.statement.select.*;
- //
- //import java.util.List;
- //
- ///**
- // * 复写租户条件
- // */
- //public class JeecgTenantParser extends TenantSqlParser {
- //
- // /**
- // * @param expression
- // * @param table
- // * @return
- // */
- // protected Expression processTableAlias(Expression expression, Table table) {
- // String tableAliasName;
- // if (table.getAlias() == null) {
- // tableAliasName = table.getName();
- // } else {
- // tableAliasName = table.getAlias().getName();
- // }
- //
- // // in
- // if (expression instanceof InExpression) {
- // InExpression in = (InExpression) expression;
- // if (in.getLeftExpression() instanceof Column) {
- // setTableAliasNameForColumn((Column) in.getLeftExpression(), tableAliasName);
- // }
- //
- // // 比较操作
- // } else if (expression instanceof BinaryExpression) {
- // BinaryExpression compare = (BinaryExpression) expression;
- // if (compare.getLeftExpression() instanceof Column) {
- // setTableAliasNameForColumn((Column) compare.getLeftExpression(), tableAliasName);
- // } else if (compare.getRightExpression() instanceof Column) {
- // setTableAliasNameForColumn((Column) compare.getRightExpression(), tableAliasName);
- // }
- //
- // // between
- // } else if (expression instanceof Between) {
- // Between between = (Between) expression;
- // if (between.getLeftExpression() instanceof Column) {
- // setTableAliasNameForColumn((Column) between.getLeftExpression(), tableAliasName);
- // }
- // }
- // return expression;
- // }
- //
- // private void setTableAliasNameForColumn(Column column, String tableAliasName) {
- // column.setColumnName(tableAliasName + "." + column.getColumnName());
- // }
- //
- // /**
- // * 默认是按 tenant_id=1 按等于条件追加
- // *
- // * @param currentExpression 现有的条件:比如你原来的sql查询条件
- // * @param table
- // * @return
- // */
- // @Override
- // protected Expression builderExpression(Expression currentExpression, Table table) {
- // final Expression tenantExpression = this.getTenantHandler().getTenantId(true);
- // Expression appendExpression;
- // if (!(tenantExpression instanceof SupportsOldOracleJoinSyntax)) {
- // appendExpression = new EqualsTo();
- // ((EqualsTo) appendExpression).setLeftExpression(this.getAliasColumn(table));
- // ((EqualsTo) appendExpression).setRightExpression(tenantExpression);
- // } else {
- // appendExpression = processTableAlias(tenantExpression, table);
- // }
- // if (currentExpression == null) {
- // return appendExpression;
- // }
- // if (currentExpression instanceof BinaryExpression) {
- // BinaryExpression binaryExpression = (BinaryExpression) currentExpression;
- // if (binaryExpression.getLeftExpression() instanceof FromItem) {
- // processFromItem((FromItem) binaryExpression.getLeftExpression());
- // }
- // if (binaryExpression.getRightExpression() instanceof FromItem) {
- // processFromItem((FromItem) binaryExpression.getRightExpression());
- // }
- // } else if (currentExpression instanceof InExpression) {
- // InExpression inExp = (InExpression) currentExpression;
- // ItemsList rightItems = inExp.getRightItemsList();
- // if (rightItems instanceof SubSelect) {
- // processSelectBody(((SubSelect) rightItems).getSelectBody());
- // }
- // }
- // if (currentExpression instanceof OrExpression) {
- // return new AndExpression(new Parenthesis(currentExpression), appendExpression);
- // } else {
- // return new AndExpression(currentExpression, appendExpression);
- // }
- // }
- //
- // @Override
- // protected void processPlainSelect(PlainSelect plainSelect, boolean addColumn) {
- // FromItem fromItem = plainSelect.getFromItem();
- // if (fromItem instanceof Table) {
- // Table fromTable = (Table) fromItem;
- // if (!this.getTenantHandler().doTableFilter(fromTable.getName())) {
- // plainSelect.setWhere(builderExpression(plainSelect.getWhere(), fromTable));
- // if (addColumn) {
- // plainSelect.getSelectItems().add(new SelectExpressionItem(new Column(this.getTenantHandler().getTenantIdColumn())));
- // }
- // }
- // } else {
- // processFromItem(fromItem);
- // }
- // List<Join> joins = plainSelect.getJoins();
- // if (joins != null && joins.size() > 0) {
- // joins.forEach(j -> {
- // processJoin(j);
- // processFromItem(j.getRightItem());
- // });
- // }
- // }
- //
- //}
|