Explorar el Código

修复`mybatis`的部分解析错误

mxd hace 3 años
padre
commit
c6f78f9e2d

+ 1 - 1
magic-api/src/main/java/org/ssssssss/magicapi/modules/BoundSql.java

@@ -140,7 +140,7 @@ public class BoundSql {
 
 	BoundSql copy(String newSqlOrXml) {
 		BoundSql boundSql = new BoundSql();
-		boundSql.setParameters(new ArrayList<>(this.parameters));
+		boundSql.parameters = this.parameters;
 		boundSql.bindParameters = this.bindParameters;
 		boundSql.sqlOrXml = newSqlOrXml;
 		boundSql.excludeColumns = this.excludeColumns;

+ 2 - 2
magic-api/src/main/java/org/ssssssss/magicapi/modules/mybatis/TrimSqlNode.java

@@ -29,11 +29,11 @@ public class TrimSqlNode extends SqlNode {
     }
 
     public void setSuffixOverrides(String suffixOverrides) {
-        this.suffixOverrides = suffixOverrides.toUpperCase();
+        this.suffixOverrides = suffixOverrides == null ? null : suffixOverrides.toUpperCase();
     }
 
     public void setPrefixOverrides(String prefixOverrides) {
-        this.prefixOverrides = prefixOverrides.toUpperCase();
+        this.prefixOverrides = prefixOverrides == null ? null : prefixOverrides.toUpperCase();
     }
 
     @Override

+ 18 - 4
magic-api/src/main/java/org/ssssssss/magicapi/modules/mybatis/WhereSqlNode.java

@@ -1,13 +1,27 @@
 package org.ssssssss.magicapi.modules.mybatis;
 
+import java.util.List;
+import java.util.Map;
+
 /**
  * 对应XML中 <where>
+ *
  * @author zhangxu
  * @version : 2020-12-05
  */
 public class WhereSqlNode extends TrimSqlNode {
-    public WhereSqlNode() {
-        this.prefix = "WHERE";
-        this.prefixOverrides = "AND | OR | AND\n| OR\n| AND\r| OR\r| AND\t| OR\t";
-    }
+	public WhereSqlNode() {
+		this.prefix = "WHERE";
+		this.prefixOverrides = "AND | OR | AND\n| OR\n| AND\r| OR\r| AND\t| OR\t";
+	}
+
+	@Override
+	public String getSql(Map<String, Object> paramMap, List<Object> parameters) {
+		String sql = super.getSql(paramMap, parameters);
+		if (this.prefix.equals(sql.trim())) {
+			return "";
+		}
+		return sql;
+	}
+
 }