第九篇:Spring Boot整合Spring Data JPA_入门试炼06

八、JpaSpecificationExecutor接口
前言:该接口主要提供了多条件查询的支持,并且可以在查询中添加分页和排序。
注意:JpaSpecificationExecutor接口是独立存在的。完全独立。
在这里插入图片描述
1、持久层接口:

public interface UsersRepositorySpecification extends JpaRepository<Users,Integer>, JpaSpecificationExecutor<Users> {
}

测试代码

@RunWith(SpringRunner.class)
@SpringBootTest
public class UsersRepositorySpecificationTest {@Autowiredprivate UsersRepositorySpecification usersRepositorySpecification;/*** jpaSpecificationExecutor 接口 单条件测试*/@Testpublic void jpaSpecificationExecutor() {/*** Specification<Users> 用于封装条件*/Specification<Users> spec = new Specification<Users>() {/*** Root<Users>:查询对象属性封装* CriteriaQuery<?> query:疯长了我们要执行的查询中各个部分的信息,select from order* CriteriaBuilder:查询条件的构造器,定义不同查询条件* @param root* @param query* @param criteriaBuilder* @return*/@Overridepublic Predicate toPredicate(Root<Users> root, CriteriaQuery<?> query, CriteriaBuilder criteriaBuilder) {/*** 参数1:查询的属性* 参数2:查询的指*/Predicate pre = criteriaBuilder.equal(root.get("name"), "zhanga");return pre;}};List<Users> list = usersRepositorySpecification.findAll(spec);for (Users users : list) {System.out.println(users);}}/*** jpaSpecificationExecutor 接口 多条件测试*/@Testpublic void jpaSpecificationExecutor2() {/*** Specification<Users> 用于封装条件*/Specification<Users> spec = new Specification<Users>() {/*** Root<Users>:查询对象属性封装* CriteriaQuery<?> query:疯长了我们要执行的查询中各个部分的信息,select from order* CriteriaBuilder:查询条件的构造器,定义不同查询条件* @param root* @param query* @param criteriaBuilder* @return*/@Overridepublic Predicate toPredicate(Root<Users> root, CriteriaQuery<?> query, CriteriaBuilder criteriaBuilder) {/*** where name='zhanga' and age = 20* 参数2:查询的指*/List<Predicate> list = new ArrayList<>();list.add(criteriaBuilder.equal(root.get("name"), "zhanga"));list.add(criteriaBuilder.equal(root.get("age"), 22));Predicate[] arr = new Predicate[list.size()];return criteriaBuilder.and(list.toArray(arr));}};List<Users> list = usersRepositorySpecification.findAll(spec);for (Users users : list) {System.out.println(users);}}/*** jpaSpecificationExecutor 接口 多条件测试2*/@Testpublic void jpaSpecificationExecutor3() {/*** Specification<Users> 用于封装条件*/Specification<Users> spec = new Specification<Users>() {/*** Root<Users>:查询对象属性封装* CriteriaQuery<?> query:疯长了我们要执行的查询中各个部分的信息,select from order* CriteriaBuilder:查询条件的构造器,定义不同查询条件* @param root* @param query* @param cb* @return*/@Overridepublic Predicate toPredicate(Root<Users> root, CriteriaQuery<?> query, CriteriaBuilder cb) {/*** where name='zhanga' and age = 20* 参数2:查询的指*/
//                List<Predicate> list = new ArrayList<>();
//                list.add(criteriaBuilder.equal(root.get("name"), "zhanga"));
//                list.add(criteriaBuilder.equal(root.get("age"), 22));
//                Predicate[] arr = new Predicate[list.size()];//只有and
//                return cb.and(cb.equal(root.get("name"),"zhanga"),cb.equal(root.get("age"),22));//只有or
//                return cb.or(cb.equal(root.get("name"),"zhanga"),cb.equal(root.get("age"),22));//and+or//name='zhanga' and age=22 or id =2   and 的优先级高于or 相当于//(name='zhanga' and age=22) or id =2return cb.or(cb.equal(root.get("name"), "zhanga"), cb.equal(root.get("age"), 22), cb.equal(root.get("id"), 2));}};//添加排序规则Sort sort = new Sort(new Sort.Order(Sort.Direction.DESC, "id"));List<Users> list = usersRepositorySpecification.findAll(spec, sort);for (Users users : list) {System.out.println(users);}}
}

本文源码下载:

github地址:
https://github.com/gb-heima/Spring-Boot-Actual-Combat/tree/master/parent/spring-boot-chapter-9

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/524200.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt场景中图形项的删除

场景中图形项删除的时候调用系统函数removeItem()删除该图形项&#xff0c;但还需将图形项delete掉&#xff0c;并置为空&#xff0c;主要代码如下&#xff1a; void chunzhongForm::deleteItem(QGraphicsItem *item) {scene->removeItem(item);if(item ! NULL){delete ite…

第十篇:Spring Boot整合mybatis+逆向工程(Mysql+Oracle) 入门试炼01

1、添加pom依赖 <dependencies><!--springboot web 启动器--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--thymeleaf 启动器--><d…

Qt中QMap删除元素的简单使用

QMap基本上qt中的使用和C中QMap的使用一样&#xff0c;下面先附上一段代码&#xff1a; void chunzhongForm::deleteScrGroupItem(int screenGroup) {QMap<findInfo,QGraphicsRectItem*>::iterator it;for(it itemMap.begin();it!itemMap.end();){if(it.key().sid scr…

Docker简介与简单使用 | 技术头条

戳蓝字“CSDN云计算”关注我们哦&#xff01;技术头条&#xff1a;干货、简洁、多维全面。更多云计算精华知识尽在眼前&#xff0c;get要点、solve难题&#xff0c;统统不在话下&#xff01;作者&#xff1a;常仕禄转自&#xff1a;Docker前一段花了一段时间研究Log4j2的源码&a…

OpenGL ES EGL eglSwapBuffer

目录 一. EGL 前言二. EGL 绘制流程简介三.eglSwapBuffer 函数简介 四.关于多个 EGLContext五.共享 EGLContext六.猜你喜欢 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 基础 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> Open…

第十篇:Spring Boot整合mybatis+Mysql 入门试炼02

前言&#xff1a; 1、(SprigBoot整合SpringMVCMybatis) 2、以thymeleaf作为视图层技术整合 3、springboot版本2.0.5.RELEASE 创建项目 1、添加依赖及启动器 <dependencies><!--springboot web 启动器--><dependency><groupId>org.springframework.boo…

qt获取场景的缩略图

获取场景缩略图的代码如下&#xff1a; void chunzhongForm::getRenderPaint() {QPixmap pixmap(SMALL_W,SMALL_H);pixmap.fill(Qt::transparent);QPainter painter(&pixmap);painter.setRenderHint(QPainter::Antialiasing);scene->render(&painter);pixmap.save(…

要闻君说:台积电将为iPhone生产5纳米A系列芯片?腾讯云TStack与银河麒麟完成互认证……...

关注并标星星CSDN云计算极客头条&#xff1a;速递、最新、绝对有料。这里有企业新动、这里有业界要闻&#xff0c;打起十二分精神&#xff0c;紧跟fashion你可以的&#xff01;每周三次&#xff0c;打卡即read更快、更全了解泛云圈精彩newsgo go go 【4月9日 星期二】云の声音切…

Centos出现-bash: unzip: command not found的解决办法

利用unzip命令解压缩的时候&#xff0c;出现-bash: unzip: command not found的错误 问题定位&#xff1a; unzip——命令没有找到&#xff0c;其原因肯定是没有安装unzip。 解决方案在线安装unzip &#xff1a; 执行命令&#xff1a; yum install -y unzip zip安装成功后就可…

一堆数据中将某一个值相同的数据进行分组

假如一堆数据&#xff0c;每一个数据都有一个标志位&#xff0c;按照标志位值的不同进行划分为不同的组&#xff0c;进行归类。 代码如下&#xff1a; void chunzhongForm::traverseList(winProList &dataList) {int nSize dataList.size();for(int i 0; i < nSize; …

微服务进阶避坑指南 | 技术头条

戳蓝字“CSDN云计算”关注我们哦&#xff01;技术头条&#xff1a;干货、简洁、多维全面。更多云计算精华知识尽在眼前&#xff0c;get要点、solve难题&#xff0c;统统不在话下&#xff01;来源&#xff1a;青云QingCloud 作者&#xff1a;周小四 青云QingCloud 应用及容器平台…

Launch failed - cleaning up connection

Jenkins远程连接ssh(Linux系统)失败 关键信息&#xff1a; Warning: no key algorithms provided; JENKINS-42959 disabled Warning: no key algorithms provided; JENKINS-42959 disabled SSHLauncher{host192.168.45.145, port22, credentialsId61eab5fd-5c3f-4bc7-a794-f87…

前后两组结构相同的数据进行比较,找出新增的,需要删除的,原来存在的

想象现在服务器在向客户端发送数据&#xff0c;每隔几秒发送一次数据&#xff0c;客户端需要将前后两次的数据进行对比&#xff0c;找出相对于收的数据需要将上一次的数据删除的部分&#xff0c;以及此次新增加的&#xff0c;还有原来就已经存在的数据。 代码如下&#xff1a; …

Hadoop精华问答:Hadoop框架最核心的设计是?

2006年项目成立的一开始,“Hadoop”这个单词只代表了两个组件——HDFS和MapReduce。到现在的13个年头,这个单词代表的是“核心”&#xff0c;今天我们就来看看关于Hadoop的精华问答。1Q&#xff1a;Hadoop是什么&#xff1f;A&#xff1a;Hadoop是一个由Apache基金会所开发的分…

git.exe init#timeout = 10错误:克隆远程repo'origin'时出错hudson.plugins.git

用Jenkins自动化搭建测试环境&#xff0c;Jenkins构建任务 关键异常抓取 git.exe init&#xff03;timeout 10错误&#xff1a;克隆远程repoorigin时出错hudson.plugins.git (git.exe init # timeout10 ERROR: Error cloning remote repo origin hudson.plugins.git)具体异常抓…

Qt中绘制直线

绘制多条直线&#xff0c;直接上代码&#xff1a; 绘制直线的部分 QPen pen(Qt::lightGray,1);pen.setStyle(Qt::DashDotDotLine);pen.setWidth(1);painter.setPen(pen);painter.translate(0, 0);painter.drawLines(lines);添加直线代码&#xff1a; for(int i 0; i < rowC…

阿里云镜像仓库

阿里云镜像加速器 第一步&#xff1a;进入apache-maven-3.6.1/conf/目录 cd apache-maven-3.6.1/conf/第二步&#xff1a;编辑settings.xml文件添加阿里云仓库镜像 vim settings.xml第三步&#xff1a;在文件中找到标签&#xff0c;在里面复制添加即可&#xff01; <mirro…

Docker精华问答 | 多个 Docker 容器之间共享数据怎么办?

在计算机技术日新月异的今天, Docker 在国内发展的如火如荼。特别是在一线互联网公司 Docker 的使用是十分普遍的,甚至成为了一些企业面试的加分项&#xff0c;那么今天我们继续关于Docker 的精华问答。1Q&#xff1a;容器磁盘可以限制配额么&#xff1f; A&#xff1a;对于 de…

Qt中多个动态创建的按钮同时绑定一个槽函数,判断被点击的是哪个按钮

当动态创建按钮&#xff0c;每一个创建的按钮都与同一个槽函数绑定&#xff0c;点击按钮的时候获取被点击的按钮的文本。 代码如下&#xff1a; QString getClickedBtn() {outPut<<"getClickedBtn()";QString strText " ";for(int i 0; i < m_…

ssh连接远程linux环境

ssh连接远程linux环境 格式为&#xff1a; ssh 用户名远程ip地址例如&#xff1a; ssh root192.168.182.128