ソースを参照

修复MySQL INSERT SELECT场景@Sensitive注解不生效问题

woody 3 ヶ月 前
コミット
de232a0ae0

+ 1 - 17
framework-database/src/main/java/com/chelvc/framework/database/interceptor/DynamicInvokeInterceptor.java

@@ -915,7 +915,6 @@ public class DynamicInvokeInterceptor implements Interceptor {
      * @return true/false
      */
     private boolean prepare(BoundSql bound, Insert insert) {
-        // 绑定参数TypeHandler
         boolean rebuild = false;
         ItemsList items = insert.getItemsList();
         List<Column> columns = insert.getColumns();
@@ -926,22 +925,7 @@ public class DynamicInvokeInterceptor implements Interceptor {
         } else if (items instanceof ExpressionList) {
             this.bindTypeHandler(bound, insert.getTable(), columns, ((ExpressionList) items).getExpressions());
         } else if (insert.getSelect() != null) {
-            SelectBody body = insert.getSelect().getSelectBody();
-            if (body instanceof PlainSelect && ObjectUtils.notEmpty(((PlainSelect) body).getSelectItems())) {
-                // 绑定 INSERT SELECT 语句TypeHandler
-                List<SelectItem> selects = ((PlainSelect) body).getSelectItems();
-                for (int i = 0, size = selects.size(); i < size; i++) {
-                    SelectItem item = selects.get(i);
-                    if (item instanceof SelectExpressionItem
-                            && ((SelectExpressionItem) item).getExpression() instanceof JdbcParameter) {
-                        JdbcParameter parameter = (JdbcParameter) ((SelectExpressionItem) item).getExpression();
-                        this.bindTypeHandler(bound, insert.getTable(), columns.get(i), parameter);
-                    }
-                }
-            } else if (body != null) {
-                // 预处理JdbcParameter类型查询参数
-                rebuild = this.prepare(bound, body, body);
-            }
+            rebuild = this.prepare(bound, insert.getSelect());
         }
 
         // 初始化参数默认值