@Test public void testQueryRawColumns() throws Exception { Dao<Foo, Integer> dao = createDao(Foo.class, true); Foo foo1 = new Foo(); foo1.val = 1; foo1.equal = 10; assertEquals(1, dao.create(foo1)); Foo foo2 = new Foo(); foo2.val = 10; foo2.equal = 5; assertEquals(1, dao.create(foo2)); QueryBuilder<Foo, Integer> qb = dao.queryBuilder(); qb.selectRaw("COUNT(*)"); GenericRawResults<String[]> rawResults = dao.queryRaw(qb.prepareStatementString()); List<String[]> results = rawResults.getResults(); assertEquals(1, results.size()); // 2 rows inserted assertEquals("2", results.get(0)[0]); qb = dao.queryBuilder(); qb.selectRaw("MIN(val)", "MAX(val)"); rawResults = dao.queryRaw(qb.prepareStatementString()); results = rawResults.getResults(); assertEquals(1, results.size()); String[] result = results.get(0); assertEquals(2, result.length); // foo1 has the maximum value assertEquals(Integer.toString(foo1.val), result[0]); // foo2 has the maximum value assertEquals(Integer.toString(foo2.val), result[1]); }
@Test public void testOrderByRawAndOrderBy() throws Exception { Dao<Foo, Integer> dao = createDao(Foo.class, true); Foo foo1 = new Foo(); foo1.val = 1; foo1.equal = 10; assertEquals(1, dao.create(foo1)); Foo foo2 = new Foo(); foo2.val = 5; foo2.equal = 7; assertEquals(1, dao.create(foo2)); Foo foo3 = new Foo(); foo3.val = 7; foo3.equal = 5; assertEquals(1, dao.create(foo3)); List<Foo> results = dao.queryBuilder() .orderByRaw("(" + Foo.VAL_COLUMN_NAME + "+" + Foo.EQUAL_COLUMN_NAME + ") DESC") .query(); assertEquals(3, results.size()); assertEquals(foo2.id, results.get(0).id); assertEquals(foo3.id, results.get(1).id); assertEquals(foo1.id, results.get(2).id); results = dao.queryBuilder() .orderByRaw("(" + Foo.VAL_COLUMN_NAME + "+" + Foo.EQUAL_COLUMN_NAME + ") DESC") .orderBy(Foo.VAL_COLUMN_NAME, false) .query(); assertEquals(3, results.size()); assertEquals(foo3.id, results.get(0).id); assertEquals(foo2.id, results.get(1).id); assertEquals(foo1.id, results.get(2).id); results = dao.queryBuilder() .orderBy(Foo.VAL_COLUMN_NAME, true) .orderByRaw("(" + Foo.VAL_COLUMN_NAME + "+" + Foo.EQUAL_COLUMN_NAME + ") DESC") .query(); assertEquals(3, results.size()); assertEquals(foo1.id, results.get(0).id); assertEquals(foo2.id, results.get(1).id); assertEquals(foo3.id, results.get(2).id); }
@Test public void testColumnArg() throws Exception { Dao<Foo, Integer> fooDao = createDao(Foo.class, true); Foo foo1 = new Foo(); int val = 3123123; foo1.val = val; foo1.equal = val; assertEquals(1, fooDao.create(foo1)); Foo foo2 = new Foo(); foo2.val = val; foo2.equal = val + 1; assertEquals(1, fooDao.create(foo2)); QueryBuilder<Foo, Integer> qb = fooDao.queryBuilder(); qb.where().eq(Foo.VAL_COLUMN_NAME, new ColumnArg(Foo.EQUAL_COLUMN_NAME)); List<Foo> results = qb.query(); assertNotNull(results); assertEquals(1, results.size()); assertEquals(foo1.id, results.get(0).id); }
@Test public void testQueryRaw() throws Exception { Dao<Foo, Integer> dao = createDao(Foo.class, true); Foo foo = new Foo(); foo.val = 1; foo.equal = 10; assertEquals(1, dao.create(foo)); QueryBuilder<Foo, Integer> qb = dao.queryBuilder(); qb.where().eq(Foo.VAL_COLUMN_NAME, new SelectArg()); GenericRawResults<String[]> rawResults = dao.queryRaw(qb.prepareStatementString(), Integer.toString(foo.val)); List<String[]> results = rawResults.getResults(); assertEquals(1, results.size()); boolean found = false; String[] columnNames = rawResults.getColumnNames(); for (int i = 0; i < rawResults.getNumberColumns(); i++) { if (columnNames[i].equalsIgnoreCase(Foo.ID_COLUMN_NAME)) { assertEquals(Integer.toString(foo.id), results.get(0)[0]); found = true; } } assertTrue(found); }