ORMLite查询封装了许多函数,用于构建查询语句,以下总结了一些常用的方法:
1、public QueryBuilder<T,ID>orderBy(String columnName, boolean ascending)
加入“order by”语句,可以加入多个,先加入的先应用,注意传入的boolean值表示是否升序排列
2、public QueryBuilder<T,ID>selectColumns(Iterable<String> columns)
设置返回的列值,可以设置多次叠加
3、public QueryBuilder<T,ID>selectColumns(String... columns)
设置返回的列值,如果没有设置,默认返回所有。对于有“id”列的类,“id”列将自动返回。可多次调用叠加
4、public QueryBuilder<T,ID>selectRaw(String... columns)
查询中添加原始列或者聚合函数(MAX, COUNT...),仅适用于Dao.queryRaw(String, String...)。可多次调用叠加
5、public QueryBuilder<T,ID>setCountOf(boolean countOf)
设置是否只返回结果的数量
6、public long countOf()throwsSQLException
返回结果数量
7、public QueryBuilder<T,ID>having(String having)
添加SQL的“having”语句,字符串中应该不包含“having”
PS:在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用。比如:
SELECT Customer,SUM(OrderPrice) FROM Orders GROUP BY Customer HAVING SUM(OrderPrice)<2000
8、publicQueryBuilder<T,ID>join(QueryBuilder,?> joinedQueryBuilder) throwsSQLException
连接另一个query builder,类似于“inner join”。其中一个必须要有另一个的外键。以AND连接。
9、public QueryBuilder<T,ID>joinOr(QueryBuilder,?> joinedQueryBuilder) throwsSQLException
以OR连接
10、public TqueryForFirst() throwsSQLException
返回第一个结果
11、public Where<T,ID>in(String columnName,QueryBuilder,?> subQueryBuilder)
设置列值得取值返回,取值范围来自于subQueryBuilder,通过QueryBuilder.selectColumn(String...)只能设置一个列。通过这个方法,能实现多层调用。
12、public Where<T,ID>notIn(String columnName, QueryBuilder,?> subQueryBuilder) throwsSQLException
加入“not in”语句
13、public Where<T,ID>exists(QueryBuilder,?> subQueryBuilder)
EXISTS(包括 NOT EXISTS )子句的返回值是一个BOOL值。将外查询表的每一行,代入内查询作为检验,如果内查询返回的结果取非空值,则EXISTS子句返回TRUE,这一行行可作为外查询的结果行,否则不能作为结果。NOT EXISTS则相反。
14、public void reset()
清空QueryBuilder,以便复用。
参考文档:
1、http://ormlite.com/javadoc/ormlite-core/com/j256/ormlite/stmt/QueryBuilder.html
2、http://ormlite.com/javadoc/ormlite-core/com/j256/ormlite/stmt/Where.html
3、http://www.w3school.com.cn/sql/sql_having.asp