Caratacus 8 years ago
parent
commit
4c10237e09

+ 18 - 4
mybatis-plus/src/main/java/com/baomidou/mybatisplus/mapper/Wrapper.java

@@ -465,7 +465,7 @@ public abstract class Wrapper<T> implements Serializable {
 				inSql.append(" NOT");
 				inSql.append(" NOT");
 			}
 			}
 			inSql.append(" LIKE {0}");
 			inSql.append(" LIKE {0}");
-			sql.WHERE(formatSql(String.format("%s = {0}", column), SqlUtils.concatLike(value, type)));
+			sql.WHERE(formatSql(inSql.toString(), SqlUtils.concatLike(value, type)));
 		}
 		}
 	}
 	}
 
 
@@ -558,7 +558,7 @@ public abstract class Wrapper<T> implements Serializable {
 	 */
 	 */
 	public Wrapper<T> in(String column, String value) {
 	public Wrapper<T> in(String column, String value) {
 		if (StringUtils.isNotEmpty(value)) {
 		if (StringUtils.isNotEmpty(value)) {
-			sql.WHERE(formatSql(inExpression(column, StringUtils.splitWorker(value, ",", -1, false), false), value));
+			in(column, StringUtils.splitWorker(value, ",", -1, false));
 		}
 		}
 		return this;
 		return this;
 	}
 	}
@@ -574,7 +574,7 @@ public abstract class Wrapper<T> implements Serializable {
 	 */
 	 */
 	public Wrapper<T> notIn(String column, String value) {
 	public Wrapper<T> notIn(String column, String value) {
 		if (StringUtils.isNotEmpty(value)) {
 		if (StringUtils.isNotEmpty(value)) {
-			sql.WHERE(formatSql(inExpression(column, StringUtils.splitWorker(value, ",", -1, false), true), value));
+			notIn(column, StringUtils.splitWorker(value, ",", -1, false));
 		}
 		}
 		return this;
 		return this;
 	}
 	}
@@ -680,11 +680,25 @@ public abstract class Wrapper<T> implements Serializable {
 	 * @param val2
 	 * @param val2
 	 * @return this
 	 * @return this
 	 */
 	 */
-	public Wrapper<T> between(String column, String val1, String val2) {
+	public Wrapper<T> between(String column, Object val1, Object val2) {
 		sql.WHERE(formatSql(String.format("%s BETWEEN {0} AND {1}", column), val1, val2));
 		sql.WHERE(formatSql(String.format("%s BETWEEN {0} AND {1}", column), val1, val2));
 		return this;
 		return this;
 	}
 	}
 
 
+	/**
+	 * NOT betwwee 条件语句
+	 *
+	 * @param column
+	 *            字段名称
+	 * @param val1
+	 * @param val2
+	 * @return this
+	 */
+	public Wrapper<T> notBetween(String column, Object val1, Object val2) {
+		sql.WHERE(formatSql(String.format("%s NOT BETWEEN {0} AND {1}", column), val1, val2));
+		return this;
+	}
+
 	/**
 	/**
 	 * 为了兼容之前的版本,可使用where()或and()替代
 	 * 为了兼容之前的版本,可使用where()或and()替代
 	 *
 	 *

+ 9 - 10
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/EntityWrapperTest.java

@@ -24,6 +24,7 @@ import org.junit.Assert;
 import org.junit.Test;
 import org.junit.Test;
 
 
 import java.util.ArrayList;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.HashMap;
 import java.util.HashMap;
 import java.util.List;
 import java.util.List;
 import java.util.Map;
 import java.util.Map;
@@ -157,13 +158,9 @@ public class EntityWrapperTest {
 				.andNew("new=xx").like("hhh", "ddd").andNew("pwd=11").isNotNull("n1,n2").isNull("n3").groupBy("x1")
 				.andNew("new=xx").like("hhh", "ddd").andNew("pwd=11").isNotNull("n1,n2").isNull("n3").groupBy("x1")
 				.groupBy("x2,x3").having("x1=11").having("x3=433").orderBy("dd").orderBy("d1,d2");
 				.groupBy("x2,x3").having("x1=11").having("x3=433").orderBy("dd").orderBy("d1,d2");
 		System.out.println(ew.toString());
 		System.out.println(ew.toString());
-		Assert.assertEquals("AND (name=? AND id=1) \n" +
-                "OR (status=? OR status=1 AND nlike = ?) \n" +
-                "AND (new=xx AND hhh = ?) \n" +
-                "AND (pwd=11 AND n1 IS NOT NULL AND n2 IS NOT NULL AND n3 IS NULL)\n" +
-                "GROUP BY x1, x2,x3\n" +
-                "HAVING (x1=11 AND x3=433)\n" +
-                "ORDER BY dd, d1,d2",ew.toString());
+		Assert.assertEquals("AND (name=? AND id=1) \n" + "OR (status=? OR status=1 AND nlike = ?) \n"
+				+ "AND (new=xx AND hhh = ?) \n" + "AND (pwd=11 AND n1 IS NOT NULL AND n2 IS NOT NULL AND n3 IS NULL)\n"
+				+ "GROUP BY x1, x2,x3\n" + "HAVING (x1=11 AND x3=433)\n" + "ORDER BY dd, d1,d2", ew.toString());
 	}
 	}
 
 
 	@Test
 	@Test
@@ -334,10 +331,12 @@ public class EntityWrapperTest {
 		 */
 		 */
 		ew.setEntity(new User(1));
 		ew.setEntity(new User(1));
 		ew.setParamAlias("ceshi");
 		ew.setParamAlias("ceshi");
-		String sqlPart = ew.or("sql = {0}", "sql").like("default", "default", SqlLike.DEFAULT).like("left", "left", SqlLike.LEFT)
-				.like("right", "right", SqlLike.RIGHT).isWhere(true).eq("bool", true).toString();
+		ew.or("sql = {0}", "sql").like("default", "default", SqlLike.DEFAULT).like("left", "left", SqlLike.LEFT);
+		ew.in("aaabbbcc", "1,3,4");
+		String sqlPart = ew.in("bbb", Arrays.asList(new String[] { "a", "b", "c" })).like("right", "right", SqlLike.RIGHT).isWhere(true)
+				.eq("bool", true).between("ee","1111","222").toString();
 		System.out.println("sql ==> " + sqlPart);
 		System.out.println("sql ==> " + sqlPart);
-		Assert.assertEquals("WHERE (sql = ? AND default = ? AND left = ? AND right = ? AND bool = ?)", sqlPart);
+		Assert.assertEquals("WHERE (sql = ? AND default LIKE ? AND left LIKE ? AND aaabbbcc IN (?,?,?) AND bbb IN (?,?,?) AND right LIKE ? AND bool = ? AND ee BETWEEN ? AND ?)", sqlPart);
 		System.out.println(ew.getSqlSegment());
 		System.out.println(ew.getSqlSegment());
 	}
 	}
 }
 }