主题:Query.count() 方法疑问

facer 2019年09月19日 32

查看源码,count()方法执行过程中,把查询条件全部清理了。如果我想要复用query对象,怎么使用?最常见的一个场景就是分页:先要使用count()方法获取总记录数,然后再设置分页查询的条件,再获取list。

image.png


伪代码:

Query<Jiayouorderentity> query = jiayouordermapper.createQuery();        

query.andEq("status", "Yizhifu");

 long count = query.count(); 

// 这里想复用已经设置的query对象,但是上面status的查询条件被清掉了。

 List<…> list = query.desc("id").page(page, PAGE_SIZE).getList();

Gavin 2019年09月19日

这个也是非常重要的场景,这几天考虑下怎么设计支持这个场景。
目前可以通过这个方式实现


LambdaQuery condition = lambdaQuery.condition().andEq(Blog::getId,1);
lambdaQuery.and(condition).count();
lambdaQuery.and(condition).select();

我再想想有没有更好的办法

Gavin 2019年09月19日

如果你只是分页的话,可以先用一个 page 这个方法
  query.andEq(xxx,xxx).page(1,10);