jpa 利用JpaSpecificationExecutor做复杂多表联合查询
/*** 多表联合查询**/@RequestMapping("/q2")public void specQ2(){Specification<LinkMan> specification = new Specification<LinkMan>() {@Overridepublic Predicate toPredicate(Root<LinkMan> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {List<Predicate> predicates = new ArrayList<Predicate>();// 多表连接获取查询参数Join<LinkMan, Customer> join = root.join("customer", JoinType.LEFT);predicates.add(criteriaBuilder.equal(join.get("custName"), "Google"));Predicate[] p = new Predicate[predicates.size()];return criteriaBuilder.and(predicates.toArray(p));}};System.out.println("----###----###--");List<LinkMan> results = linkManDao.findAll(specification);System.out.println(results);}/*** 多表联合查询* @param linkMan* @param role*/@RequestMapping("/q3")
// public void listUser(LinkMan linkMan, Role role){public void listUser(){Specification<LinkMan> specification = new Specification<LinkMan>() {@Overridepublic Predicate toPredicate(Root<LinkMan> root, CriteriaQuery<?> query, CriteriaBuilder cb) {List<Predicate> predicates = new ArrayList<>();Join<LinkMan, Role> roleJoin = root.join("roles", JoinType.LEFT);
// predicates.add(cb.equal(roleJoin.get("roleId"), role.getRoleId()));predicates.add(cb.equal(roleJoin.get("roleId"), "108"));// if (linkMan.getLkName() != null){if (root.get("lkName") != null){
// predicates.add(cb.like(root.get("lkName"), "%" + linkMan.getLkName() +"%"));predicates.add(cb.like(root.get("lkName"), "%" + "C" + "%"));}Predicate[] predicatesArr = new Predicate[predicates.size()];predicates.toArray(predicatesArr);return cb.and(predicatesArr);}};System.out.println("+++++(Q 3)##########");System.out.println(linkManDao.findAll(specification));}
jpa 利用JpaSpecificationExecutor做复杂多表联合查询相关推荐
- MySQL通过两表避免回表_mysql利用覆盖索引避免回表优化查询
前言 说到覆盖索引之前,先要了解它的数据结构:B+树. 先建个表演示(为了简单,id按顺序建): id name 1 aa 3 kl 5 op 8 aa 10 kk 11 kl 14 jk 16 ml ...
- mysql+索引优化+查询优化+存储优化_mysql利用覆盖索引避免回表优化查询
前言 说到覆盖索引之前,先要了解它的数据结构:B+树. 先建个表演示(为了简单,id按顺序建): id name 1 aa 3 kl 5 op 8 aa 10 kk 11 kl 14 jk 16 ml ...
- MySQL 子查询,多表联合查询,视图,存储过程详解
-----------MySQL数据库中多表联合查询---------- 多表联合查询的理论依据:笛卡尔积 通过笛卡尔乘积,把两个或者多个表变为一个大表,里面包含了有效的,无效的记录(需要加条件进行过 ...
- oracle多表联合查询更新,ORACLE 两表关联更新三种方式
不多说了,我们来做实验吧. 创建如下表数据 select * from t1 ; select * from t2; 现需求:参照T2表,修改T1表,修改条件为两表的fname列内容一致. 方式1,u ...
- MySQL 多表联合查询有何讲究?
今天我们来聊聊微信中的多表联合查询,应该是小表驱动大表还是大表驱动小表? 1. in VS exists 在正式分析之前,我们先来看两个关键字 in 和 exists. 假设我现在有两张表:员工表和部 ...
- mysql多表联查分页_sqlserver多表联合查询和多表分页查询的代码讲解
sqlserver多表联合查询和多表分页查询的代码讲解 发布时间:2020-05-14 14:42:07 来源:亿速云 阅读:700 作者:Leah 这篇文章主要为大家详细介绍了sqlserver多表 ...
- mysql多表查询分页面_mysql多表联合查询分点经验给大家
你的位置: 问答吧 -> MySQL -> 问题详情 mysql多表联合查询分点经验给大家 我在工作中天天研究zen cart的程序,那个叫人痛苦,最近比较痛苦的是经常碰见mysql多表联 ...
- mysql同张表关联多次查询_MySQL多次单表查询和多表联合查询
Tip:不建议执行三张表以上的多表联合查询 对数据量不大的应用来说,多表联合查询开发高效,但是多表联合查询在表数据量大,并且没有索引的时候,如果进行笛卡儿积,那数据量会非常大,sql执行效率会非常低 ...
- 多表联合查询、嵌套查询
多表联合查询: 条件:连接到一起的两张表,必须存在公共字段(主外键关系的字段就是公共字段).名字可以不同,但是数据的含义.字段的类型.长度必须一致.(学生表和商品表就没有公共字段,两张表不适合做连接查 ...
最新文章
- Windows:安装Chrome OS/Chromium OS/CloudReady 到虚拟机VMware/VirtualBox
- SparkSQL(Spark-1.4.0)实战系列(一)——DataFrames基础
- SQL注入_1-6_user-agent注入
- Editability on SAP Text
- python做什么模型_主题模型初学者指南[Python]
- java 从excel中读取数据_java如何从excel中读出数据
- 同一解决方案内的多个项目之间如何引用?
- meta你到底了解多少
- oracle向右削减和补全,b操纵序列削减Oracle数据库开辟工作量-开辟技术/b[Oracle防范]...
- 生产者消费者模型(自己上锁与阻塞队列两版本)
- 数字图像处理第三次试验:图像复原、图像分割
- 摩托罗拉E2卸载MPKG程序的简单方法
- 【网络与系统安全实验】网络与系统安全概述
- html 文字竖着排引号,竖排文字 引号如何使用?
- 网络共享计算机网络无法访问,局域网电脑无法访问共享文件网络共享失败怎么解决...
- IP-guard功能模块简介
- c中字符串分割函数strtok
- 社交软件红包技术解密(十):手Q客户端针对2020年春节红包的技术实践
- 在控制面板找不到程序的情况下,卸载流氓软件
- Value ‘0000-00-00 00:00:00‘ can not be represented as java.sql.Timestamp