最基础的多表多条件分页查询

Controller层

 @ApiOperation(value = "根据条件分页查询成绩")
    @PostMapping("condition/{current}/{limit}")
    public R pageQueryCondition(@ApiParam(name = "current", value = "当前页码", required = true)
                                @PathVariable Long current,
                                @ApiParam(name = "limit", value = "每页记录数", required = true)
                                @PathVariable Long limit,
                                @ApiParam(name = "resultQuery", value = "条件查询对象", required = false)
                                @RequestBody ResultQuery resultQuery) {
        //创建page对象
        Page<Result> pageSubject = new Page(current, limit);
        List<ResulstPageVo> resulstPageVos = resultService.pageQuery(current.intValue(), limit.intValue());
        return R.ok().data("total", resulstPageVos.size()).data("records", resulstPageVos);
    }

Service层

 List<ResulstPageVo> pageQuery(Integer current, Integer size);

Service层里的ServiceImpl

 @Override
     public List<ResulstPageVo> pageQuery(Integer current,Integer size) {
       List<ResulstPageVo>  list=  resultMapper.mySelectPage((current-1)*size,size);//要加个三目运算当current小于1时。
       return  list;
    }

Mapper层

List<ResulstPageVo> mySelectPage(Integer current,Integer size);

Mapper层里的xml

<select id="mySelectPage" resultType="com.athuiju.eduservice.entity.vo.ResulstPageVo">
SELECT s.`stu_name`,r.`examDate` FROM `result` r RIGHT JOIN `student` s ON r.`studentNo`=s.`studentid` 
LIMIT #{current},#{size}
</select>
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在JPA中,我们可以使用Criteria API来实现复杂/多条件组合的分页查询。 首先,我们需要创建一个CriteriaBuilder对象,它可以帮助我们构建查询条件和排序规则。然后,我们可以通过调用CriteriaBuilder的createQuery方法来创建查询对象,并指定查询的返回结果类型。接下来,我们需要创建一个Root对象,它表示我们要查询的实体类,并以此为基础构建查询的条件和排序规则。 对于多条件组合查询,我们可以使用Predicate对象来表示不同的查询条件,然后使用CriteriaQuery对象的where方法来添加这些条件。例如,假设我们要查询年龄大于20且性别为女性的用户,我们可以使用如下代码来添加条件: ```java CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder(); CriteriaQuery<User> query = criteriaBuilder.createQuery(User.class); Root<User> userRoot = query.from(User.class); Predicate agePredicate = criteriaBuilder.greaterThan(userRoot.get("age"), 20); Predicate genderPredicate = criteriaBuilder.equal(userRoot.get("gender"), "女性"); query.where(criteriaBuilder.and(agePredicate, genderPredicate)); ``` 如果我们还需要对查询结果进行分页,我们可以使用CriteriaQuery对象的setFirstResult和setMaxResults方法来设置查询的起始位置和返回的最大记录数。例如,如果我们要查询第一页的10条记录,我们可以使用如下代码: ```java int pageNumber = 1; int pageSize = 10; query.setFirstResult((pageNumber - 1) * pageSize); query.setMaxResults(pageSize); ``` 最后,我们可以通过调用EntityManager的createQuery方法来执行查询,并获取结果集。例如,我们可以使用以下代码来执行查询: ```java TypedQuery<User> typedQuery = entityManager.createQuery(query); List<User> userList = typedQuery.getResultList(); ``` 以上就是使用JPA实现复杂/多条件组合分页查询的基本步骤。通过使用Criteria API,我们可以灵活地构建查询条件和排序规则,实现个性化的查询需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值