Query类详解

本篇介绍Query类,Query是一个查询参数类,封装了查询条件,分页,排序等功能。

参数介绍

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

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

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

分页参数

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

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

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

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

排序参数

设置排序:

orderby(String sortname, Sort sort)

其中sortname为数据库字段,非javaBean属性
- orderby(String sortname, Sort sort)则可以指定排序方式,Sort为排序方式枚举
假如要按照添加时间倒序,可以这样写:

Query query = new Query().orderby("create_time",Sort.DESC);
dao.find(query);

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

query.orderby("create_time",Sort.DESC).orderby("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模糊查询
inin()查询
notInnot in()查询
isNullNULL值查询
notNullIS 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”都为数据库字段。

  • 41
    点赞
  • 211
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
`query.record()`函数是在数据库查询时,返回结果集中的一条记录(一行数据),并将其转换为一个Python对象。通常情况下,我们使用ORM(对象关系映射)工具来操作数据库,这些工具会自动将查询结果转换为Python对象,因此我们不必手动使用`query.record()`函数。 但在某些情况下,我们可能需要手动使用`query.record()`函数,例如: 1. 当我们需要对查询结果进行一些特殊处理时,例如将结果集中的某些字段进行计算、过滤等操作。 2. 当我们需要手动处理查询结果时,例如将查询结果转换为其他数据格式(如JSON、XML等)。 `query.record()`函数返回一个`QSqlRecord`对象,该对象表示一条记录,它包含了该记录的所有字段和字段值。我们可以通过`QSqlRecord`对象的`field()`和`value()`方法来获取字段名和字段值。 示例代码如下: ```python query = QSqlQuery() query.exec_("SELECT * FROM users") while query.next(): record = query.record() username = record.value("username") email = record.value("email") print(username, email) ``` 上述代码中,我们执行了一条查询语句,查询了`users`表中的所有记录,并通过`query.next()`方法逐行遍历查询结果。对于每一行记录,我们使用`query.record()`方法获取该记录的`QSqlRecord`对象,并通过`value()`方法获取该记录的`username`和`email`字段的值。最后将这些值输出到控制台。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值