上一篇博客讲述了ORMLite框架的基本用法。最后留下一个问题,对于查询条件比较高的查询ORMLite如何查询呢?
这里ORMLite提供了QureyBuilder类解决复杂查询的问题。
还是先上一些代码看看:
QueryBuild erqueryBuilder = userDao.queryBuilder();
queryBuilder
.distinct()// 排重
.groupBy("columnName") //分组
.limit(1000L).offset(10L) //分页
.orderBy("name", true) //排序
.where().like("name", "%张三%");
List<User> users = queryBuilder.query();
这里我们使用Dao类的一个方法queryBuilder()获取一个QueryBuiler对象,然后给这个连续调用这个对象的方法,组合成一个复杂的查询条件,再调用query()方法就可以返回一个集合,这个集合就是查询结果了,是不是特别简单~
那么查询的重点就是QueryBuilder的一系列查询方法了,我们来看看常用方法:
distinct() //去除重复的数据行
orderBy(String columnName, boolean ascending) //根据指定列名排序,columnName为列名,第二个参数false表示降序,true表示
升序
groupBy(String columnName) //根据指定列名分组
offset(Long startRow) //跳过指定行数
limit(Long maxRows) //限制获取指定行数
countOf() //返回按照已组合的查询条件查询的数据总数
另外还有一些where子句,这些where子句和where()方法一起使用,准确的说是where()语句会返回一个Where对象,改Where对象提供了这些where子句,我们来看看常用where子句:
eq(String columnName, Object value) //此方法相当于SQL语句中的 WHERE id = 2,columnName为列名,value为匹配键
lt(String columnName, Object value) //此方法相当于SQL语句中的 WHERE id < 2
gt(String columnName, Object value) //此方法相当于SQL语句中的 WHERE id > 2
le(String columnName, Object value) //此方法相当于SQL语句中的 WHERE id <=2
ge(String columnName, Object value) //此方法相当与SQL语句中的 WHERE id >=2
ne(String columnName, Object value) //此方法相当于SQL语句中的 WHERE id <> 2
in(String columnName, Object... objects) // 此方法相当于SQL语句中的 WHERE id IN(1,2)
notIn(String columnName, Object... objects) //此方法相当于SQL语句中的 WHERE id NOT IN(1,2)
like(String columnName, Object value) //此方法相当于SQL语句中的 WHERE id LIKE “2%”
between(String columnName, Object low, Object high) //此方法相当于SQL语句中的 WHERE id BETWEEN 1 AND 2
and()、or() //用来组合以上这些方法
有这些方法,想必一般的复杂查询都可以解决了~
MQL于2017年8月19日完成本文。