html分页查询条件,jpa自定义条件分页查询

主要依赖

org.springframework.boot

spring-boot-starter-data-jpa

这里以我最近自己瞎折腾的项目部分代码为例子(仅展示主要部分):

实体类名称(Confusion)

需要注意的是

类上+ @Entity

主键字段+ @Id

packagecn.zytao.taosir.disabuse.dao;importorg.springframework.data.jpa.repository.JpaRepository;importorg.springframework.data.jpa.repository.JpaSpecificationExecutor;importcn.zytao.taosir.common.model.disabuse.Confusion;public interface ConfusionRepository extends JpaRepository, JpaSpecificationExecutor{

}

JpaRpository这里就不多讲了,需要注意的是,同时继承JpaSpecificationExecutor

我们发现,继承该类后,可以使用相关的API

468a2d57e03d2e7aabbaaf9a61ddea27.png

注意Specification类

70e2d2fcb1aea1f20ae0ae9dd920c517.png

通过源码可以发现这个方法,关键就是重写它了

在Service层中

@SuppressWarnings({ "deprecation", "serial"})

@Overridepublic Page findByPageAndParams(Confusion params, int pageNumber, intpageSize) {

Pageable pageable= newPageRequest(pageNumber, pageSize);

Specification confusion=new Specification() {

@Overridepublic Predicate toPredicate(Root root, CriteriaQuery>query,

CriteriaBuilder criteriaBuilder) {

Path theme = root.get("theme");return criteriaBuilder.like(theme, "%"+params.getTheme()+"%");

}

};returnconfusionRepository.findAll(confusion, pageable);

}

以上仅做参考,CriteribBuilder用于构造自定义的查询条件(即条件构造器)

25cc195d24c2fb5cd06854ef755f6585.png

通过相关的方法,我们可以采用类字符串拼接的方式,以节点把多个 criteriaBuilder 拼成一个 criteriaBuilder

之后在toPredicate方法返回即可

控制层

public JSONObject findByParamAndPage(@RequestBody Confusion confusion, int pageNumber, intpageSize) {

Page result =confusionService.findByPageAndParams(confusion, pageNumber, pageSize);

JSONObject data=newJSONObject();

data.put("content", result.getContent());

data.put("totalNums", result.getTotalElements());

data.put("totalPages",result.getTotalPages());returnActionHelper.responseOk(data);

}

因为这里我的项目使用的是分布式的一个实现方式,[email protected],自行编写

下面看看在swagger2下的效果。

9163bf83fb0981d7ddfe4ed87bcbc387.png

1872408cf9158d4292fa2a3b43bded5d.png

47d8812b079429be3db3bc73bccad929.png

f1a807cccaed97552c905fdeca1c16e6.png

原文:https://www.cnblogs.com/it-taosir/p/9874033.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值