easymybatis的Query详解

Posted tanghc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了easymybatis的Query详解相关的知识,希望对你有一定的参考价值。

在上一篇easymybatis的查询功能文章中大量用到了Query类,Query是一个查询参数类,通常配合Dao一起使用。

easymybatis的所有查询工作都是围绕Query类来进行,本文就来详细介绍一下这个类。

参数介绍

Query里面封装了一系列查询参数,主要分为以下几类:

  • 分页参数:设置分页
  • 排序参数:设置排序字段
  • 条件参数:设置查询条件
  • 字段参数:可返回指定字段

下面逐个讲解每个参数的用法。

分页参数

一般来说分页的使用比较简单,通常是两个参数, pageIndex:当前页索引,pageSize:每页几条数据。 Query类使用**setPage(pageIdnex, pageSize)**方法来设置。 假如我们要查询第二页,每页10条数据,代码可以这样写:

Query query = new Query();
query.setPage(2, 10);
List<User> list = dao.find(query);

如果要实现不规则分页,可以这样写:

Query query = new Query();
query.setStart(3).setLimit(5);
// 对应mysql:limit 3,5
  • 如果要查询所有数据,则可以这样写:
Query query = new Query();
query.setQueryAll(true);
List<User> list = dao.find(query);

排序参数

设置排序,有两个方法:

addSort(String sortname)
addSort(String sortname, Sort sort)

其中sortname为数据库字段,非javaBean属性

  • addSort(String sortname) 添加排序字段,默认使用ASC
  • addSort(String sortname, Sort sort)则可以指定排序方式,Sort为排序方式枚举 假如要按照添加时间倒序,可以这样写:
Query query = new Query();
query.addSort("create_time",Sort.DESC);
dao.find(query);

添加多个排序字段可以在后面追加:

query.addSort("create_time",Sort.DESC).addSort("id",Sort.ASC);

条件参数

条件参数是用的最多一个,因为在查询中往往需要加入各种条件。 easymybatis在条件查询上面做了一些封装,这里不做太多讲解,只讲下基本的用法,以后会单独开一篇文章来介绍。感兴趣的同学可以自行查看源码,也不难理解。

条件参数使用非常简单,Query对象封装一系列常用条件查询。

  • 等值查询eq(String columnName, Object value),columnName为数据库字段名,value为查询的值 假设我们要查询姓名为张三的用户,可以这样写:
Query query = new Query();
query.eq("username","张三");
List<User> list = dao.find(query);

通过方法名即可知道eq表示等于‘=‘,同理lt表示小于<,gt表示大于>

 

查询方式说明
eq 等于=
gt 大于>
lt 小于<
ge 大于等于>=
le 小于等于<=
notEq 不等于<>
like 模糊查询
in in()查询
notIn not in()查询
isNull NULL值查询
notNull IS NOT NULL
notEmpty 字段不为空,非NULL且有内容
isEmpty 字段为NULL或者为‘‘

 

 

 

 

 

 

 

 

 

 

 

 

如果上述方法还不能满足查询需求的话,我们可以使用自定sql的方式来编写查询条件,方法为:

Query query = new Query();
query.sql(" username=‘Jim‘ OR username=‘Tom‘");

注意:sql()方法不会处理sql注入问题,因此尽量少用。

字段参数

在某些场景下,我们只想获取表里面几个字段的信息,不想查询所有字段。此时使用方式如下:

Query query = new Query();
// 只返回id,username
query.setColumns(Arrays.asList("id","username"));
List<TUser> list = dao.find(query);

这里的"id","username"都为数据库字段。

以上是关于easymybatis的Query详解的主要内容,如果未能解决你的问题,请参考以下文章

更便捷的Mybatis插件——EasyMybatis

更快更强,来试试 Mybatis 的增强版——EasyMybatis

顶呱呱啊!更便捷的Mybatis增强插件——EasyMybatis

关于mysql驱动版本报错解决,Cause: com.mysql.jdbc.exceptions.jdbc4Unknown system variable ‘query_cache_size(代码片段

(转) Java中的负数及基本类型的转型详解

详解Android WebView加载html片段