Skip to content

Commit 15ac841

Browse files
committed
Update QueryBuilder.
1 parent 92eb6bc commit 15ac841

File tree

5 files changed

+47
-8
lines changed

5 files changed

+47
-8
lines changed

.idea/dataSources.local.xml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
subprojects {
1616
group = 'org.httprpc'
17-
version = '4.9.4'
17+
version = '4.9.5'
1818

1919
apply plugin: 'java-library'
2020

gradle/wrapper/gradle-wrapper.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-8.12.1-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip
44
networkTimeout=10000
55
validateDistributionUrl=true
66
zipStoreBase=GRADLE_USER_HOME

kilo-client/src/main/java/org/httprpc/kilo/sql/QueryBuilder.java

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,10 @@ public static QueryBuilder select(Class<?>... types) {
269269
for (var entry : BeanAdapter.getProperties(type).entrySet()) {
270270
var accessor = entry.getValue().getAccessor();
271271

272+
if (!getTableName(accessor.getDeclaringClass()).equals(tableName)) {
273+
continue;
274+
}
275+
272276
var column = accessor.getAnnotation(Column.class);
273277

274278
if (column == null) {
@@ -563,7 +567,9 @@ public static QueryBuilder insert(Class<?> type) {
563567

564568
var sqlBuilder = new StringBuilder("insert into ");
565569

566-
sqlBuilder.append(getTableName(type));
570+
var tableName = getTableName(type);
571+
572+
sqlBuilder.append(tableName);
567573

568574
var columnNames = new LinkedList<String>();
569575
var parameters = new LinkedList<String>();
@@ -572,6 +578,10 @@ public static QueryBuilder insert(Class<?> type) {
572578
for (var entry : BeanAdapter.getProperties(type).entrySet()) {
573579
var accessor = entry.getValue().getAccessor();
574580

581+
if (!getTableName(accessor.getDeclaringClass()).equals(tableName)) {
582+
continue;
583+
}
584+
575585
var column = accessor.getAnnotation(Column.class);
576586

577587
if (column == null) {
@@ -651,7 +661,9 @@ public static QueryBuilder update(Class<?> type) {
651661

652662
var sqlBuilder = new StringBuilder("update ");
653663

654-
sqlBuilder.append(getTableName(type));
664+
var tableName = getTableName(type);
665+
666+
sqlBuilder.append(tableName);
655667
sqlBuilder.append(" set ");
656668

657669
var i = 0;
@@ -662,6 +674,10 @@ public static QueryBuilder update(Class<?> type) {
662674
for (var entry : BeanAdapter.getProperties(type).entrySet()) {
663675
var accessor = entry.getValue().getAccessor();
664676

677+
if (!getTableName(accessor.getDeclaringClass()).equals(tableName)) {
678+
continue;
679+
}
680+
665681
var column = accessor.getAnnotation(Column.class);
666682

667683
if (column == null) {

kilo-client/src/test/java/org/httprpc/kilo/sql/QueryBuilderTest.java

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,12 @@ public interface A {
5353

5454
@Table("B")
5555
public interface B extends A {
56+
@Column("a")
57+
@PrimaryKey
58+
@ForeignKey(A.class)
59+
@Override
60+
String getA();
61+
5662
@Column("e")
5763
Double getE();
5864

@@ -167,6 +173,12 @@ public interface K {
167173
String getW();
168174
}
169175

176+
@Table("K")
177+
public interface L extends K {
178+
@Column("z")
179+
String getZ();
180+
}
181+
170182
@Table("M")
171183
public static class M {
172184
private Integer m;
@@ -229,9 +241,11 @@ public void testSelectA() {
229241

230242
@Test
231243
public void testSelectB() {
232-
var queryBuilder = QueryBuilder.select(B.class).filterByPrimaryKey("a").limit(10);
244+
var queryBuilder = QueryBuilder.select(A.class, B.class)
245+
.join(B.class, A.class)
246+
.filterByPrimaryKey("a").limit(10);
233247

234-
assertEquals("select B.a, B.b, B.c, B.e, B.d as x, B.f as y from B where B.a = ? limit 10", queryBuilder.toString());
248+
assertEquals("select A.a, A.b, A.c, A.d as x, B.e, B.f as y from A join B on A.a = B.a where A.a = ? limit 10", queryBuilder.toString());
235249
assertEquals(listOf("a"), getParameters(queryBuilder));
236250
}
237251

@@ -265,7 +279,7 @@ public void testSelectBtoD() {
265279
.filterByPrimaryKey("a")
266280
.filterByForeignKey(E.class, D.class, "d");
267281

268-
assertEquals("select B.a, B.b, B.c, B.e, B.d as x, B.f as y, E.z from B "
282+
assertEquals("select B.a, B.e, B.f as y, E.z from B "
269283
+ "join E on B.a = E.a "
270284
+ "where B.a = ? "
271285
+ "and E.d = ?", queryBuilder.toString());
@@ -337,6 +351,15 @@ public void testSelectIJK() {
337351
assertEquals(listOf("i"), getParameters(queryBuilder));
338352
}
339353

354+
@Test
355+
public void testSelectL() {
356+
var queryBuilder = QueryBuilder.select(L.class).filterByPrimaryKey("i");
357+
358+
assertEquals("select K.i, K.w, K.z from K where K.i = ?", queryBuilder.toString());
359+
360+
assertEquals(listOf("i"), getParameters(queryBuilder));
361+
}
362+
340363
@Test
341364
public void testSelectM() {
342365
var queryBuilder = QueryBuilder.select(M.class).filterByForeignKey(M.class, "m");

0 commit comments

Comments
 (0)