首页 > 其他分享 >jpa 的 Specification案例

jpa 的 Specification案例

时间:2023-11-14 09:57:53浏览次数:22  
标签:jpa Specification queryVo 案例 criteriaBuilder new root getName

dao接口除了extends JpaRepository外,还要 extends JpaSpecificationExecutor
        <dependency>
            <groupId>com.github.wenhao</groupId>
            <artifactId>jpa-spec</artifactId>
            <version>3.2.4</version>
        </dependency>

 





public interface UserDao extends JpaRepository<User, String>, JpaSpecificationExecutor<User> {

public Page<User> page(QueryVo queryVo){
int page= paging.getPage();
int size= paging.getSize();

//写法一
Specification<User> specification = (root, criteriaQuery, criteriaBuilder) -> {
List<Predicate> predicateList = new ArrayList<>();
if(queryVo.getName!= null && !"".equals(queryVo.getName.trim())){
predicateList.add(criteriaBuilder.like(root.get("userName"), "%"+queryVo.getName+"%"));
}
predicateList.add(criteriaBuilder.equal(root.get("isDelete"), 0));
return criteriaBuilder.and(predicateList.toArray(new Predicate[predicateList.size()]));
};

// 写法二
Specification<User> specification2 = new Specification<PerfCase>() {
@Override
public Predicate toPredicate(Root<PerfCase> root, CriteriaQuery<?> query, CriteriaBuilder criteriaBuilder) {
List<Predicate> predicates = new ArrayList<>();
if (queryVo.getName != null && !"".equals(queryVo.getName.trim())) {
predicates.add(criteriaBuilder.like(root.get("perfCaseName"), "%" + queryVo.getName + "%"));
}
predicates.add(criteriaBuilder.equal(root.get("isDelete"), 0));
return criteriaBuilder.and(predicates.toArray(new Predicate[predicates.size()]));
}
};


//排序
Sort.Order order = new Sort.Order(Sort.Direction.DESC, "createTime");
Sort sort = Sort.by(order);

// 构造分页参数
Pageable pageable = PageRequest.of(page-1, size, sort);
Page<User> userPage = userDao.findAll(specification, pageable);
return userPage;
}

}
 

 




标签:jpa,Specification,queryVo,案例,criteriaBuilder,new,root,getName
From: https://www.cnblogs.com/wuyicode/p/17830949.html

相关文章

  • 串口案例
    111204  #ifndefMAINWINDOW_H#defineMAINWINDOW_H#include<QMainWindow>#include<QSerialPort>namespaceUi{classMainWindow;}classMainWindow:publicQMainWindow{Q_OBJECTpublic:explicitMainWindow(QWidget*parent=......
  • 多线程案例
    111200  #ifndefMAINWINDOW_H#defineMAINWINDOW_H#include<QMainWindow>#include"subthread.h"#include<QThread>namespaceUi{classMainWindow;}classMainWindow:publicQMainWindow{Q_OBJECTpublic:explicitM......
  • 全志R128应用开发案例——获取真随机数
    获取真随机数本文案例代码下载地址获取真随机数案例代码https://www.aw-ol.com/downloads?cat=24R128内置了TRNG,一个真随机数发生器,随机源是8路独立的环形振荡器,由模拟器件电源噪声产生频率抖动,用低频始终重采样,然后进行弹性抽取和熵提取处理,最终输出128bit真随......
  • JavaSE day06【排序查找算法,Map集合,集合的嵌套,斗地主案例】测评题
    选择题题目1(多选):下列关于TreeSet集合排序的原理正确的是()选项:​ A.排序方法如果返回的是小于0,代表的是当前元素较小,需要存放在左边​ B.排序方法如果返回的是大于0,代表的是当前元素较大,需要存放在右边​ C.排序此方法如果返回的是0,代表的是当前元......
  • 斗地主案例 Console version
    packagepers.landlord_fighting.thj;/*按照斗地主的规则,完成洗牌发牌的动作。要求完成以下功能:准备牌:组装54张扑克牌洗牌:54张牌顺序打乱发牌:三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌。看牌:查看三人各自手中的牌(按照牌的大小排序)、底牌规则:手中扑克牌从大......
  • 萤石网络云平台服务人民网“数造新实体”案例库
    当前,科技水平不断进步,数字经济已经逐渐走入国人的生活,成为中国经济高质量发展的重要引擎。近期,人民网数字经济研究中心就启动了“数造新实体——数字技术赋能实体经济(2023)”课题项目案例征集活动。萤石网络所推出的萤石开放平台音视频PaaS服务成功入选案例库。自萤石网络创......
  • 《大型网站技术架构--核心原理与案例分析》阅读笔记
    这本书组织的很不错,语言精练,篇幅也不长,对网站架构的要点讲的狠清楚透彻,思路清晰。主要围绕架构的五个要点:性能、高可用、伸缩性、扩展性、安全性。令人印象非常深刻。而且李智慧老师深谙职场之道,后面一些关于技术人的建议也让人受用无穷。事物发展到一定阶段,就会拥有自身的发展冲......
  • hmac使用场景及nodejs案例
    HMAC(Hash-basedMessageAuthenticationCode,基于哈希的消息认证码)是一种基于哈希函数的安全认证机制,用于确保数据的完整性和身份认证。它通过将密钥与消息进行哈希运算,生成一个固定长度的哈希值,用于验证数据的真实性和完整性。原理:使用一个密钥(Key)和一个哈希函数(如SHA-256)生成一个......
  • 合约量化交易系统APP开发案例
    项目背景:该案例软件的开发是一款针对市场交易员而设计的软件系统,它能帮助交易者实现高效率的合约交易。我们目的是以用户的需求为主进行开发,应对市场上未知的风险和把控。开发过程:软件在开发过程中,采用了多种的开发按技术,软件工具包,开发框架,数据库技术,移动端的开发。在开发前先......
  • Wazuh开源入侵检测和威胁预防的部署和应用案例
    基本介绍Wazuh是一个免费的开源平台,用于威胁预防、检测和响应。它能够跨本地、虚拟化、容器化和基于云的环境保护工作负载。Wazuh解决方案由部署到受监控系统的端点安全代理和管理服务器组成,该服务器收集和分析代理收集的数据。此外,Wazuh已与ElasticStack完全集成,提供搜索引......