diff --git a/src/main/java/neatlogic/framework/sqlgenerator/$sql.java b/src/main/java/neatlogic/framework/sqlgenerator/$sql.java index 5c003c15052d39cf78d4ffa996751ea0414f6007..e96aecf7a2df8b85ff195aaafea8a84f7ca77917 100644 --- a/src/main/java/neatlogic/framework/sqlgenerator/$sql.java +++ b/src/main/java/neatlogic/framework/sqlgenerator/$sql.java @@ -79,6 +79,10 @@ public class $sql { return exp(null, leftExpressionVo, operationType, rightExpressionVo, null); } + public static ExpressionVo exp(String leftParenthesis, ExpressionVo leftExpressionVo, String rightParenthesis) { + return exp(leftParenthesis, leftExpressionVo, "and", null, rightParenthesis); + } + public static ExpressionVo exp(String leftColumn, String operationSymbol, String rightColumn) { return new ExpressionVo(leftColumn, operationSymbol, rightColumn); } @@ -331,6 +335,17 @@ public class $sql { return plainSelect; } + public static void setDistinct(PlainSelect plainSelect, boolean distinct) { + if (plainSelect == null) { + return; + } + if (distinct) { + plainSelect.setDistinct(new Distinct()); + } else { + plainSelect.setDistinct(null); + } + } + public static void addSelectColumn(PlainSelect plainSelect, String columnName) { addSelectColumn(plainSelect, columnName, null); } diff --git a/src/main/java/neatlogic/framework/sqlgenerator/$sqlTest.java b/src/main/java/neatlogic/framework/sqlgenerator/$sqlTest.java index 678083a439e74a190ca1754e49bc7d65ad12bb40..f2abd2fa4d0aa7aba9051f27ece469120315b338 100644 --- a/src/main/java/neatlogic/framework/sqlgenerator/$sqlTest.java +++ b/src/main/java/neatlogic/framework/sqlgenerator/$sqlTest.java @@ -32,6 +32,7 @@ public class $sqlTest { List methodNameList = getMethodNameList($sql.class); testSql(methodNameList); testForm(methodNameList); + testSetDistinct(methodNameList); testSetSelectColumn(methodNameList); testAddSelectColumn(methodNameList); testAddJoin(methodNameList); @@ -168,6 +169,19 @@ public class $sqlTest { methodNameList.remove("public static void from(PlainSelect, String, String, String)"); } + private static void testSetDistinct(List methodNameList) { +// public static void setDistinct(PlainSelect, boolean) + PlainSelect plainSelect = $sql.from("tenant"); + $sql.setDistinct(plainSelect, true); + $sql.setSelectColumn(plainSelect, "name"); + System.out.println("plainSelect = " + plainSelect); + Assert.isTrue(Objects.equals(plainSelect.toString(), "SELECT DISTINCT name FROM tenant"), "测试失败"); + + $sql.setDistinct(plainSelect, false); + $sql.setSelectColumn(plainSelect, "uuid"); + Assert.isTrue(Objects.equals(plainSelect.toString(), "SELECT uuid FROM tenant"), "测试失败"); + methodNameList.remove("public static void setDistinct(PlainSelect, boolean)"); + } private static void testSetSelectColumn(List methodNameList) { PlainSelect plainSelect = $sql.from("tenant"); // public static void setSelectColumn(PlainSelect, String) @@ -617,7 +631,12 @@ public class $sqlTest { $sql.addWhereExpression(plainSelect, $sql.exp("(", $sql.exp("uuid", "=", "name"), "and", $sql.exp("name", "=", "uuid"), ")")); Assert.isTrue(Objects.equals(plainSelect.toString(), "SELECT FROM tenant WHERE (uuid = name AND name = uuid)"), "测试失败"); methodNameList.remove("public static ExpressionVo exp(String, ExpressionVo, String, ExpressionVo, String)"); - +// public static ExpressionVo exp(String, ExpressionVo, String) + plainSelect = $sql.from("tenant"); + ExpressionVo orExp = $sql.exp($sql.exp("uuid", "=", "name"), "or", $sql.exp("name", "=", "uuid")); + $sql.addWhereExpression(plainSelect, $sql.exp("(", orExp, ")")); + Assert.isTrue(Objects.equals(plainSelect.toString(), "SELECT FROM tenant WHERE (uuid = name OR name = uuid)"), "测试失败"); + methodNameList.remove("public static ExpressionVo exp(String, ExpressionVo, String)"); } private static void testFun(List methodNameList) { diff --git a/src/main/java/neatlogic/framework/sqlgenerator/ExpressionVo.java b/src/main/java/neatlogic/framework/sqlgenerator/ExpressionVo.java index d7edfa2d26a8e71d7b0209831ec48f7c5b2e7b9a..65b0631314d3e8bb0dce52bdb617677729beb586 100644 --- a/src/main/java/neatlogic/framework/sqlgenerator/ExpressionVo.java +++ b/src/main/java/neatlogic/framework/sqlgenerator/ExpressionVo.java @@ -34,6 +34,10 @@ public class ExpressionVo { private final String operationSymbol; private final String type; + ExpressionVo(String leftParenthesis, ExpressionVo leftExpressionVo, String rightParenthesis) { + this(leftParenthesis, leftExpressionVo, "and", null, rightParenthesis); + } + ExpressionVo(ExpressionVo leftExpressionVo, String operationType, ExpressionVo rightExpressionVo) { this(null, leftExpressionVo, operationType, rightExpressionVo, null); }