spring data jpa动态条件查询
来源:互联网 发布:紫青双剑坐骑进阶数据 编辑:程序博客网 时间:2024/06/04 08:30
这里,spring data jpa为我们提供了JpaSpecificationExecutor接口,只要简单实现toPredicate方法就可以实现复杂的查询
@Repositorypublic interface MonitorRepository extends JpaRepository<Monitor, Long>, JpaSpecificationExecutor {}
ctrl类
@GetMapping("/api/listPage") @ResponseBody public Map<String, Object> listPage(@RequestParam(value = "pageNumber", defaultValue = "1") Integer pageNumber, @RequestParam(value = "pageSize", defaultValue = "100") Integer pageSize, @RequestParam("searchName") String searchName, @RequestParam("searchUrl") String searchUrl) { //Pageable默认从0开始 pageNumber = pageNumber <= 0 ? 0 : pageNumber - 1; Pageable pageable = new PageRequest(pageNumber, pageSize);// Page<Monitor> monitorList = monitorRepository.findMonitorByNameOrUrl(pageable, searchName, urlPath); Specification specification = new Specification() { @Override public Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBuilder cb) { List<Predicate> predicates = new ArrayList<>(); if (StringUtils.isNotBlank(searchName)) { predicates.add(cb.like(root.get("name"), "%" + searchName + "%")); } if (StringUtils.isNotBlank(searchUrl)) { predicates.add(cb.like(root.get("url"), "%" + searchUrl + "%")); } return cb.and(predicates.toArray(new Predicate[predicates.size()])); } }; Page<Monitor> monitorList = monitorRepository.findAll(specification, pageable); Map<String, Object> result = new HashMap<>(); result.put("total", monitorList.getTotalElements()); result.put("rows", monitorList.getContent()); return result; }
bean类
import com.fasterxml.jackson.annotation.JsonFormat;import org.hibernate.annotations.CreationTimestamp;import javax.persistence.*;import java.io.Serializable;import java.util.Date;@Entity@Table(name = "monitor")public class Monitor implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "m_id", length = 11) private Long id; @Column(name = "m_name", length = 64) private String name; @Column(name = "m_group", length = 64) private String group; @Column(name = "m_url", length = 200) private String url; @Temporal(TemporalType.TIMESTAMP) @Column(name = "create_time") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00") @CreationTimestamp private Date createTime; }
阅读全文
0 0
- spring data jpa动态条件查询
- Spring Data JPA 动态查询
- Spring Data JPA动态查询
- Spring jpa data多条件分页查询
- spring data jpa 条件分页查询
- Spring Data JPA 多条件查询
- spring data jpa 多表多条件查询
- spring data jpa多条件查询
- Spring data jpa多表查多条件查询
- Spring data jpa 多表查询(一:单表动态条件查询)
- Spring data jpa 多表查询(二:多表动态条件查询)
- Spring data jpa 多表查询(三:多对多关系动态条件查询)
- spring jpa动态条件查询并分页
- Spring Data JPA中的动态查询
- spring data jpa的动态查询封装
- Spring Data JPA中的动态查询
- Spring Data JPA 复杂/多条件组合查询
- Spring Data JPA 复杂/多条件组合查询
- delphi中的pos(args0,args1)与javascript中的indexOf的转化
- 给定一个字符串和一个整数k,对字符串开头算起的每2k个字符的前k个字符进行反转。 如果还有少于k个字符,则将其全部撤消。 如果小于2k但大于或等于k个字符,则反转前k个字符,
- 6-2 多态性与虚函数
- javah 类com.xxxx.xxxx 找不到问题解决方法
- ckeditor监控剩余字数
- spring data jpa动态条件查询
- 浅谈在Java开发中的枚举的作用和用法
- golang进阶(八)——隐藏技能go:linkname
- springboot源码分析16-spring boot监听器使用
- 嵌入式系统交叉调试原理和方法
- iOS 面试题~经验找代码错误
- 7个优秀的国内外移动端web框架
- Windows 安装Pyton出现Microsoft.VC90.CRT,version=version="9.0.21022.8"
- 自定义照相机(一)