diff options
author | uchicom <2980920+uchicom@users.noreply.github.com> | 2021-05-03 01:09:41 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-05-02 12:09:41 -0400 |
commit | 3ae6f66919787d279a78818605126bcdec8f9139 (patch) | |
tree | f509aa0bd3b2a89be88e0cfd12815c178eacfcba /src | |
parent | 7c0aec71814f5b1bf4f93a9186b945beec42c70b (diff) | |
download | iciql-3ae6f66919787d279a78818605126bcdec8f9139.tar.gz iciql-3ae6f66919787d279a78818605126bcdec8f9139.zip |
simple join select (#39)
* simple join select
* test for simple join select
* test for simple join select
Diffstat (limited to 'src')
-rw-r--r-- | src/main/java/com/iciql/Query.java | 6 | ||||
-rw-r--r-- | src/main/java/com/iciql/TableDefinition.java | 11 | ||||
-rw-r--r-- | src/test/java/com/iciql/test/JoinTest.java | 15 |
3 files changed, 29 insertions, 3 deletions
diff --git a/src/main/java/com/iciql/Query.java b/src/main/java/com/iciql/Query.java index d1528e8..e9404ec 100644 --- a/src/main/java/com/iciql/Query.java +++ b/src/main/java/com/iciql/Query.java @@ -291,7 +291,11 @@ public class Query<T> { List<T> result = Utils.newArrayList(); TableDefinition<T> def = from.getAliasDefinition(); SQLStatement stat = getSelectStatement(distinct); - def.appendSelectList(stat); + if (isJoin()) { + def.appendSelectList(stat, from.getAs()); + } else { + def.appendSelectList(stat); + } appendFromWhere(stat); ResultSet rs = stat.executeQuery(); try { diff --git a/src/main/java/com/iciql/TableDefinition.java b/src/main/java/com/iciql/TableDefinition.java index fe273c0..05cdbf6 100644 --- a/src/main/java/com/iciql/TableDefinition.java +++ b/src/main/java/com/iciql/TableDefinition.java @@ -1150,6 +1150,17 @@ public class TableDefinition<T> { } } + void appendSelectList(SQLStatement stat, String as) { + for (int i = 0; i < fields.size(); i++) { + if (i > 0) { + stat.appendSQL(", "); + } + stat.appendSQL(as + "."); + FieldDefinition def = fields.get(i); + stat.appendColumn(def.columnName); + } + } + <Y, X> void appendSelectList(SQLStatement stat, Query<Y> query, X x) { // select t0.col1, t0.col2, t0.col3... // select table1.col1, table1.col2, table1.col3... diff --git a/src/test/java/com/iciql/test/JoinTest.java b/src/test/java/com/iciql/test/JoinTest.java index e3370b1..77523c5 100644 --- a/src/test/java/com/iciql/test/JoinTest.java +++ b/src/test/java/com/iciql/test/JoinTest.java @@ -58,7 +58,7 @@ public class JoinTest { .select(new UserNote() { { userId = n.userId; - noteId = n.noteId; + id = n.id; text = n.text; } }); @@ -66,6 +66,17 @@ public class JoinTest { } @Test + public void testPrimitiveJoinAndSimpleSelect() throws Exception { + final UserId u = new UserId(); + final UserNote n = new UserNote(); + + List<UserId> userIds = db.from(u).innerJoin(n).on(u.id).is(n.userId).where(n.text).is("D") + .select(); + assertEquals(1, userIds.size()); + assertEquals(1, userIds.get(0).id); + } + + @Test public void testJoin() throws Exception { final UserId u = new UserId(); final UserNote n = new UserNote(); @@ -140,7 +151,7 @@ public class JoinTest { public static class UserNote { @IQColumn(autoIncrement = true, primaryKey = true) - public int noteId; + public int id; @IQColumn public int userId; |