/**
* 多表联合查询
*
*/
@RequestMapping("/q2")
public void specQ2(){
Specification<LinkMan> specification = new Specification<LinkMan>() {
@Override
public 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>() {
@Override
public 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做复杂多表联合查询
最新推荐文章于 2024-05-29 19:50:28 发布