JPA cb.or 或查询 Predicate QBC查询 CriteriaBuilder子查询 CriteriaBuilder之in及not in @Query in ArrayList初始化

news/2024/10/18 18:29:22/
常用查询:equal(等于),notEqual(不等于), gt(大于), ge(大于等于),lt(小于), le(小于等于),between(闭区间中的值),like(模糊)等
predicates.add(cb.or(cb.like(root.get("productName"),"%" + name + "%"),cb.like(root.get("productBarcode"),"%" + name + "%")));

QBC查询

//查询模板配置记录
Specification querySpecifi = new Specification<ConfigImage>() {@Overridepublic Predicate toPredicate(Root<ConfigImage> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder cb) {List<Predicate> predicates = new ArrayList<>();predicates.add(cb.equal(root.get("enabledFlag"), 1));predicates.add(cb.equal(root.get("imageType"), 2));//2功能图标predicates.add(cb.equal(root.get("appid"), "wx3a99cda67d10d479"));return cb.and(predicates.toArray(new Predicate[predicates.size()]));}
};
List<ConfigImage> list = configImageRepo.findAll(querySpecifi);

CriteriaBuilder子查询 CriteriaBuilder之in及not in

子查询模式

//子查询
Subquery<WorkinghoursCostConfig> subquery = cq.subquery(WorkinghoursCostConfig.class);
Root<WorkinghoursCostConfig> root2 = subquery.from(WorkinghoursCostConfig.class);
subquery.select(root2.<WorkinghoursCostConfig> get("projectName"));
//subquery.where(cb.equal(root2.get("enabledFlag"),1));
/*subquery.where(cb.equal(root2.get("enabledFlag"),1),cb.equal(root2.get("appid"),appid),cb.equal(root2.get("classOfProject"),"钣喷维修换件类"),cb.equal(root2.get("projectName"),"更换机盖")
);*/
List<Predicate> predicates2 = new ArrayList<>();
predicates2.add(cb.equal(root2.get("enabledFlag"), 1));
predicates2.add(cb.equal(root2.get("appid"), appid));
predicates2.add(cb.equal(root2.get("classOfProject"), "钣喷维修换件类"));
predicates2.add(cb.equal(root2.get("projectName"), "更换机盖"));
subquery.where(predicates2.toArray(new Predicate[predicates2.size()]));
//使用(in及notin)
predicates.add(cb.in(root.get("projectName")).value(subquery));
//predicates.add(cb.not(cb.in(root.get("projectName")).value(subquery)));

非子查询模式 

//CriteriaBuilder之in及not in(非子查询模式)
Path<Object> path = root.get("studentStatus");
CriteriaBuilder.In<Object> in = cb.in(path);
in.value(-2);
in.value(-3);
in.value(5);
//predicates.add(cb.and(in));//in
predicates.add(cb.not(in));//not in

另外一种写法

import javax.persistence.criteria.CriteriaBuilder; //导入方法依赖的package包/类
@Override
public Predicate toPredicate(Criterion c, Root<?> r, CriteriaBuilder b) {Object o = c.getCompareTo();if(o == null)return b.not(r.get(c.getPropertyName()).in());if(o instanceof Collection)return b.not(r.get(c.getPropertyName()).in((Collection)o));throw new IllegalArgumentException(c.getPropertyName());
}
//参考:https://vimsky.com/examples/detail/java-method-javax.persistence.criteria.CriteriaBuilder.not.html

@Query注解的用法(Spring Data JPA) 

方式一:?1

@Query(value = "select name,author,price from Book b where b.price>?1 and b.price<?2")
List<Book> findByPriceRange(long price1, long price2);

方式二::name

@Query(value = "select name,author,price from Book b where b.name like %:name%")
List<Book> findByNameMatch(@Param("name") String name);

方式三:in(使用in进行查询,则传入的参数必须是List,否则无法查询)

List<String> hqlIn = new ArrayList<>(Arrays.asList("张三","李四","王五"));
List<Employee> listE = employeeRepo.findEmployeeWorkerIn(hqlIn);@Query(value = "from Employee where enabledFlag=1 and userType='4' and employeeName in(?1) order by dbms_random.value()")
List<Employee> findEmployeeWorkerIn(List<String> hqlIn);

方式四:#{#entityName}

@Query(value = "select * from #{#entityName} b where b.name=?1", nativeQuery = true)
List<Book> findByName(String name);


http://www.ppmy.cn/news/486005.html

相关文章

Cb编译器的安装和使用——《自制编译器》

Cb编译器的安装和使用——《自制编译器》 文章目录 Cb编译器的安装和使用——《自制编译器》下载Cb编译器安装Cb编译器测试Cb编译器 下载Cb编译器 网址&#xff1a;http://www.ituring.com.cn/book/1308&#xff0c;点击右侧随书下载&#xff0c;即可下载cbc-1.0.tar.gz 安装…

cb函数_如何在使用Gitbook时解决“ cb.apply不是函数”错误

cb函数 I regularly use Gitbook, a little Node.js software used to generate an ebook from a set of markdown files. 我经常使用Gitbook &#xff0c;这是一个小的Node.js软件&#xff0c;用于从一组markdown文件生成电子书。 I use it for my ebooks. Today I was tryin…

安装gitbook的一些问题gitbook init和if (cb) cb.apply(this, arguments),cb.apply is not a function

一&#xff0c;使用gitbook init时&#xff0c;卡在了Installing GitBook 3.2.3这一步 解决办法&#xff1a; 一&#xff0c;翻墙 二&#xff0c;使用淘宝镜像下载&#xff1a; npm下载路径&#xff0c;检查是不是淘宝镜像&#xff1a; npm config get registrynpm config se…

第十二届蓝桥杯国赛 cb

文章目录 A: 带宽 25B: 纯质数 1903C: 完全日期 977D: 最小权值 2653631372E: 大写F: 123G: 异或变换&#xff08;已补&#xff09;H: 二进制问题I: 反转括号序列&#xff08;已补&#xff09;思路一 线段树思路二 分块 J: 异或三角形&#xff08;已补&#xff09;总结 A: 带宽…

视频基本知识  AD转换和YUV,cb cr基本知识

人眼观看图像 每秒显示25帧 最好 即帧频为25Hz 由于人眼具有视觉暂留效应 模拟电视信号转化为数字电视信号称为PCM调制&#xff0c;数字电视信号转换为模拟电视信号则称为PCM解调 视频信号A/D转换过程 采样&#xff1a;在时钟和同步信号控制下&#xff0c;每隔一段时间间隔…

cb.apply is not a function

yarn : 无法将“yarn”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。 解决1、检查本地是否安装yarn2、安装 yarn报错 cb.apply is not a function 解决 途径很是波折 1、检查本地是否安装yarn yarn -v 我这报错已经不用检查了&#xff0c;&#xff0c;&#xff0c;&…

cb使用教程

CodeBlocks简单的使用说明入门篇双击桌面上CodeBlocks图标&#xff0c;就能进入CodeBlocks集成环境&#xff0c;屏幕上就会出现CodeBlocks的主界面如下图在CodeBlocks主窗口的顶部是CodeBlocks的主菜单栏。其中包含15个菜单项&#xff1a;File(文件)、Edit(编辑)、View(查看)、…

Honda CB650R/CB650F

CB650R是HONDA在2018年底的義大利米蘭車展首度亮相、2019年正式市售的街車車款&#xff0c;同時也是以CB1000R為首&#xff0c;以「Neo Sports Cafe」為家族基因的CB-R車系的第6輛成員。 CB650R搭載著一具649c.c.水冷式四行程並列4汽缸引擎&#xff0c;能提供95ps/12,000 rpm、…