Explorar el Código

Merge pull request #1 from backpaper0/master

Added support for left outer join.
tags/v1.0.0
James Moger hace 12 años
padre
commit
dd8d894824
Se han modificado 2 ficheros con 25 adiciones y 7 borrados
  1. 14
    6
      src/com/iciql/Query.java
  2. 11
    1
      tests/com/iciql/test/JoinTest.java

+ 14
- 6
src/com/iciql/Query.java Ver fichero

@@ -836,15 +836,23 @@ public class Query<T> {
* @return the joined query
*/
@SuppressWarnings({ "unchecked", "rawtypes" })
public <A> QueryJoin<T> innerJoin(A alias) {
TableDefinition<T> def = (TableDefinition<T>) db.define(alias.getClass());
SelectTable<T> join = new SelectTable(db, this, alias, false);
def.initSelectObject(join, alias, aliasMap);
joins.add(join);
return new QueryJoin(this, join);
return join(alias, false);
}
public <A> QueryJoin<T> leftJoin(A alias) {
return join(alias, true);
}
@SuppressWarnings({ "unchecked", "rawtypes" })
private <A> QueryJoin<T> join(A alias, boolean outerJoin) {
TableDefinition<T> def = (TableDefinition<T>) db.define(alias.getClass());
SelectTable<T> join = new SelectTable(db, this, alias, outerJoin);
def.initSelectObject(join, alias, aliasMap);
joins.add(join);
return new QueryJoin(this, join);
}
Db getDb() {
return db;
}

+ 11
- 1
tests/com/iciql/test/JoinTest.java Ver fichero

@@ -81,6 +81,16 @@ public class JoinTest {
assertEquals(2, users.get(0).id);
}

@Test
public void testLeftJoin() throws Exception {
final UserId u = new UserId();
final UserNote n = new UserNote();

List<UserId> notes = db.from(u).leftJoin(n).on(u.id).is(n.userId).where(u.id).is(4).select();
assertEquals(1, notes.size());
assertEquals(4, notes.get(0).id);
}

@IQTable
public static class UserId {

@@ -104,7 +114,7 @@ public class JoinTest {
}

public static List<UserId> getList() {
UserId[] list = { new UserId(1, "Tom"), new UserId(2, "Dick"), new UserId(3, "Harry") };
UserId[] list = { new UserId(1, "Tom"), new UserId(2, "Dick"), new UserId(3, "Harry"), new UserId(4, "Jack") };
return Arrays.asList(list);
}
}

Cargando…
Cancelar
Guardar