From e47ec8432592adfe633bb9d6515ad589af00cc7a Mon Sep 17 00:00:00 2001 From: moparisthebest Date: Sun, 10 Mar 2019 22:02:10 -0400 Subject: [PATCH] Clean up SqlBuilder API --- .../moparisthebest/jdbc/util/SqlBuilder.java | 28 +++++++++++++++---- .../moparisthebest/jdbc/QueryMapperTest.java | 4 +-- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/common/src/main/java/com/moparisthebest/jdbc/util/SqlBuilder.java b/common/src/main/java/com/moparisthebest/jdbc/util/SqlBuilder.java index 6923ca5..ba6df10 100644 --- a/common/src/main/java/com/moparisthebest/jdbc/util/SqlBuilder.java +++ b/common/src/main/java/com/moparisthebest/jdbc/util/SqlBuilder.java @@ -54,24 +54,40 @@ public class SqlBuilder implements Appendable, CharSequence, Collection, // start custom SqlBuilder methods - public SqlBuilder append(final String sql, final Object bindObject) { - sb.append(sql); + public SqlBuilder bind(final Object bindObject) { this.bindObjects.add(bindObject); return this; } - public SqlBuilder append(final String sql, final Object... bindObjects) { - return this.append(sql, (Object) bindObjects); + public SqlBuilder bind(final Object... bindObjects) { + return this.bind((Object) bindObjects); + } + + public SqlBuilder appendBind(final String sql, final Object bindObject) { + sb.append(sql); + return bind(bindObject); + } + + public SqlBuilder appendBind(final String sql, final Object... bindObjects) { + return this.appendBind(sql, (Object) bindObjects); } public SqlBuilder appendInList(final String columnName, final Collection values) throws SQLException { final InList.InListObject inListObject = inList.inList(conn, columnName, values); - return this.append(inListObject.toString(), inListObject.getBindObject()); + return this.appendBind(inListObject.toString(), inListObject.getBindObject()); } public SqlBuilder appendNotInList(final String columnName, final Collection values) throws SQLException { final InList.InListObject inListObject = inList.notInList(conn, columnName, values); - return this.append(inListObject.toString(), inListObject.getBindObject()); + return this.appendBind(inListObject.toString(), inListObject.getBindObject()); + } + + public SqlBuilder and() { + return append(" AND "); + } + + public SqlBuilder or() { + return append(" OR "); } public StringBuilder getStringBuilder() { diff --git a/test/src/test/java/com/moparisthebest/jdbc/QueryMapperTest.java b/test/src/test/java/com/moparisthebest/jdbc/QueryMapperTest.java index 218ac80..f9a5c5e 100644 --- a/test/src/test/java/com/moparisthebest/jdbc/QueryMapperTest.java +++ b/test/src/test/java/com/moparisthebest/jdbc/QueryMapperTest.java @@ -769,12 +769,12 @@ public class QueryMapperTest { public void testSelectRandomSqlBuilder() throws Throwable { final List arr = Arrays.asList(1L, 2L, 3L); assertEquals(arr, qm.selectRandomSqlBuilder(qm.sqlBuilder().appendInList("person_no", arr))); - assertEquals(arr, qm.selectRandomSqlBuilder(qm.sqlBuilder().append("person_no = ? OR ", 1L).appendInList("person_no", Arrays.asList(2L, 3L)))); + assertEquals(arr, qm.selectRandomSqlBuilder(qm.sqlBuilder().appendBind("person_no = ? OR ", 1L).appendInList("person_no", Arrays.asList(2L, 3L)))); assertEquals(arr, qm.selectRandomSqlBuilder(qm.sqlBuilder().append("person_no = 1 OR ").appendInList("person_no", Arrays.asList(2L, 3L)))); assertEquals(arr, qm.selectRandomSqlBuilder(1L, qm.sqlBuilder().append(" OR person_no in (2,3)"), "NoNameMatch")); assertEquals(Collections.singletonList(2L), qm.selectRandomSqlBuilder(2L, qm.sqlBuilder(), "NoNameMatch")); assertEquals(Collections.singletonList(3L), qm.selectRandomSqlBuilder(3L, Bindable.empty, "NoNameMatch")); - assertEquals(arr, qm.selectRandomSqlBuilder(2L, qm.sqlBuilder().append("OR person_no = ? OR ", 1L).appendInList("person_no", Collections.singletonList(3L)), "NoNameMatch")); + assertEquals(arr, qm.selectRandomSqlBuilder(2L, qm.sqlBuilder().appendBind("OR person_no = ? OR ", 1L).appendInList("person_no", Collections.singletonList(3L)), "NoNameMatch")); } @Test