本文介绍JpaRepository动态查询sql

在使用前,需要导入

import javax.persistence.EntityManager;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
public List<MovieShow> selectMovieShow(MovieShow movieShow) {/**root :我们要查询的类型* query:添加查询条件* cb: 构建条件* specification为一个匿名内部类*/Specification<MovieShow> specification=new Specification<MovieShow>() {@Overridepublic Predicate toPredicate(Root<MovieShow> root,CriteriaQuery<?> query,CriteriaBuilder cb) {//创建一个条件的集合List<Predicate> predicates = new ArrayList<Predicate>();//判断传过来的category是否为null,如果不为null就加到条件中if(StringUtils.isNotEmpty(movieShow.getCategory())){/** cb.equal()相当于判断后面两个参数是否一致*root相当于我们的实体类的一个路径,使用get可以获取到我们的字段,因为我的category为String类型* 数据库字段的值category = 前台传过来的值movieShow.getCategory()*/predicates.add(cb.equal(root.get("category").as(String.class), movieShow.getCategory()));}//创建一个条件的集合,长度为上面满足条件的个数Predicate[] pre = new Predicate[predicates.size()];Predicate p1 = cb.like(root.get("name").as(String.class), "%"+movieShow.getName()+"%");  Predicate p2 = cb.equal(root.get("uuid").as(Integer.class), movieShow.getUuid());  Predicate p3 = cb.gt(root.get("age").as(Integer.class), movieShow.getAge());query.where(cb.and(p3,cb.or(p1,p2)));//根据id 倒序排列query.orderBy(cb.desc(root.get("release_date")));//这句大概意思就是将上面拼接好的条件返回去return query.where(predicates.toArray(pre)).getRestriction();}};//这里我们按照返回来的条件进行查询,就能得到我们想要的结果List<MovieShow> list= movieShowRepository.findAll(specification);return list;}

欢迎评论交流

JpaRepository动态查询sql相关推荐

  1. Linq to SQL Dynamic 动态查询

    在开发中我们常需要使用动态的条件来组合查询,scotte博客里提到了MS提供的一个动态查询类库Basic Dynamic LINQ C# Sample,这个可以给我们提供不少方便,但是给的示例实在太简 ...

  2. Linq to sql 实现多条件的动态查询(方法一)

    多条件动态查询在开发中太常见了,使用sql语句拼接很容易实现,但是在使用linq 的时候我却觉得很麻烦,思来想去,其实不然,linq 实现多条件动态查询一样可以变的很简单.话不多说,直接上例子,供大家 ...

  3. QueryBuilder : 打造优雅的Linq To SQL动态查询

    首先我们来看看日常比较典型的一种查询Form 这个场景很简单:就是根据客户名.订单日期.负责人来作筛选条件,然后找出符合要求的订单. 在那遥远的时代,可能避免不了要写这样的简单接口: public i ...

  4. Linq To Sql进阶系列(七)动态查询续及CLR与SQL在某些细节上的差别

    在上面一篇文章Linq To Sql进阶系列(六)中,我们提到了使用object的动态查询.本文在上文的基础上,再做更加深入的引申.同时修正上文中一些不妥的地方. 1, object的动态查询续 首先 ...

  5. php查询sqlserver2008r2,php根据请求参数ODBC动态连接SQL Server2008R2

    使用场景: 1.要使用php连接SQL Server2008R2 2.要根据传入的参数来动态的切换数据库 //查询sql Server所有的数据库名 //SELECT Name FROM Master ...

  6. SpringBoot JPA(JpaRepository)动态查询 分页展示

    大家知道Hibernate可以很轻松的根据提供条件进行动态筛选查询,那个JPA怎么实现呢,其中最为简单的就是使用Specification实现JPA的动态查询,本人也是初步接触JPA,第一次使用JPA ...

  7. 使用VBA动态创建SQL查询语句

    在VBA使用ADO可以高效的查询数据,但是写SQL查询语句是个有些令人头痛的事情,其实在ADO中用到的SQL语句的语法并不是很复杂,很多时候是由于即要思考SQL的语法,又要用VBA的字符串连接命令,最 ...

  8. jpa多表联查动态_jpa多表关联动态查询(自定义sql语句)

    项目中,jpa对于简单的数据库操作很方便,但如果多表关联动态查询时,需要自己去写SQL语句拼接查询条件,以下为本人学习的例子. 类似于这种多条件动态查询: 项目用的是springboot 2.1.0. ...

  9. mybatis动态查询(分页排序搜索)+分解关联查询+Logback 日志配置(打印sql到控制台)+mybatis新增记录后返回自增的id。批量=11/2~11/20

    一.mybatis动态查询(分页排序搜索) mybatis框架分页实现,有几种方式,最简单的就是利用原生的sql关键字limit来实现,还有一种就是利用interceptor来拼接sql,实现和lim ...

最新文章

  1. python sorted key=str.lower_Python——sorted()函数
  2. Redis的数据类型详解
  3. Tensorflow Day18 Convolutional Autoencoder
  4. WordPress搬家全攻略
  5. vue数组操作不更新视图问题
  6. 无法加载身份验证插件“ caching_sha2_password”
  7. win11安装报错0xc1900101怎么办 Windows11安装报错0xc1900101的解决方法
  8. 如何将Eclipse中Web项目打成war包
  9. Ensemble Learning方法总结
  10. Atitit 机器可读护照的Machine-readable passport 规范与解析格式 目录 1. 术语 1 1.1. machine-readable zone(MRZ) 1 1.2.
  11. mysql5.7备份
  12. Apache Hive 下载与安装
  13. C语言 汉字码表 STM32 拼音输入法
  14. [cryptoverse ctf 2022] cvctf
  15. DDOS 攻击的防范教程
  16. 可以写一个表白代码吗
  17. ppt转换成pdf免费软件
  18. Android通过Canvas手绘一个折线图
  19. 【官方教程】使用Quick-Cocos2d-x搭建一个横版过关游戏(六)
  20. Android Systrace 基础知识(10) - Binder 和锁竞争解读

热门文章

  1. DZ应用中心”对不起,您的网站已被设置禁止下载此应用“完美解决办法
  2. 索尼录音笔怎么导出录音内容_追黄宗泽新剧追到了索尼录音笔?没办法,就是便携好用颜值高...
  3. mac cmd 打开访达
  4. 程序员和产品经理之间的恩怨情仇
  5. 汽车业的万亿级市场缘何由康得新、康得复材开启?
  6. 办公型计算机配置清单,办公电脑配置清单_推荐_办公电脑配置全攻略!
  7. wordpress建站(空间+域名+备案)
  8. GD32VF103_DAC
  9. ssm基于大数据的智能公交平台的设计与实现毕业设计源码261620
  10. 再补充5种鼠标移动特效