|
@@ -18,16 +18,13 @@ import org.springframework.stereotype.Component;
|
|
|
|
|
|
|
|
|
|
public class CustomTenantLineInnerInterceptor extends TenantLineInnerInterceptor {
|
|
public class CustomTenantLineInnerInterceptor extends TenantLineInnerInterceptor {
|
|
|
|
+ private TenantLineHandler tenantLineHandler;
|
|
public CustomTenantLineInnerInterceptor(TenantLineHandler tenantLineHandler) {
|
|
public CustomTenantLineInnerInterceptor(TenantLineHandler tenantLineHandler) {
|
|
super(tenantLineHandler);
|
|
super(tenantLineHandler);
|
|
|
|
+ this.tenantLineHandler = tenantLineHandler;
|
|
}
|
|
}
|
|
|
|
|
|
- /**
|
|
|
|
- * 重构mybatispuls的多租户改为支持in
|
|
|
|
- * @param currentExpression
|
|
|
|
- * @param table
|
|
|
|
- * @return
|
|
|
|
- */
|
|
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
protected Expression builderExpression(Expression currentExpression, Table table) {
|
|
protected Expression builderExpression(Expression currentExpression, Table table) {
|
|
Column aliasColumn = this.getAliasColumn(table);
|
|
Column aliasColumn = this.getAliasColumn(table);
|
|
@@ -54,12 +51,28 @@ public class CustomTenantLineInnerInterceptor extends TenantLineInnerInterceptor
|
|
|
|
|
|
@Override
|
|
@Override
|
|
protected void processUpdate(Update update, int index, String sql, Object obj) {
|
|
protected void processUpdate(Update update, int index, String sql, Object obj) {
|
|
- // super.processUpdate(update,index,sql,obj);
|
|
|
|
|
|
+ Table table = update.getTable();
|
|
|
|
+ if (!this.tenantLineHandler.ignoreTable(table.getName())) {
|
|
|
|
+ Column aliasColumn = this.getAliasColumn(table);
|
|
|
|
+ FindInSetExpression findInSetExpression = new FindInSetExpression();
|
|
|
|
+ findInSetExpression.setLeftExpression(getTenantLineHandler().getTenantId());
|
|
|
|
+ findInSetExpression.setRightExpression(aliasColumn);
|
|
|
|
+ Expression where = update.getWhere() instanceof OrExpression ? new AndExpression(new Parenthesis(update.getWhere()), findInSetExpression) : new AndExpression(update.getWhere(), findInSetExpression);
|
|
|
|
+ update.setWhere(where);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
protected void processDelete(Delete delete, int index, String sql, Object obj) {
|
|
protected void processDelete(Delete delete, int index, String sql, Object obj) {
|
|
- super.processDelete(delete,index,sql,obj);
|
|
|
|
|
|
+ Table table = delete.getTable();
|
|
|
|
+ if (!this.tenantLineHandler.ignoreTable(table.getName())) {
|
|
|
|
+ Column aliasColumn = this.getAliasColumn(table);
|
|
|
|
+ FindInSetExpression findInSetExpression = new FindInSetExpression();
|
|
|
|
+ findInSetExpression.setLeftExpression(getTenantLineHandler().getTenantId());
|
|
|
|
+ findInSetExpression.setRightExpression(aliasColumn);
|
|
|
|
+ Expression where = delete.getWhere() instanceof OrExpression ? new AndExpression(new Parenthesis(delete.getWhere()), findInSetExpression) : new AndExpression(delete.getWhere(), findInSetExpression);
|
|
|
|
+ delete.setWhere(where);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|