zoukankan      html  css  js  c++  java
  • JAP 动态sql查询

    参考:https://blog.csdn.net/cmw1085215666/article/details/82946712

    要点:  

    Repository:
    *//此接口继承JpaRepository和JpaSpecificationExecutor**
    public interface WorkTableRepository  extends JpaRepository<MilestoneInfo, String> ,JpaSpecificationExcutor<MilestoneInfo>{}


    @Service
    public class JJJJJJJService {
        @Autowired
        private WorkTableRepository workTableRepository;
    //分页查询
    public Page<MilestoneInfo> queryPage(int page, int size, Map whereMap){
            Specification<MilestoneInfo> specification = createWhere(whereMap);
            PageRequest pageRequest=PageRequest.of(page-1,size);
          return   workTableRepository.findAll(specification,pageRequest);
        }
    
        /**
         * 动态构建查询条件
         * @param searchMap
         */
        private Specification<MilestoneInfo> createWhere(Map searchMap){
    
           return new Specification<MilestoneInfo>() {
               @Override
               public Predicate toPredicate(Root<MilestoneInfo> root, CriteriaQuery<?> query, CriteriaBuilder criteriaBuilder) {
                   List<Predicate> predicateList = new ArrayList<Predicate>();
                   System.err.println("*********id:"+searchMap.get("id"));
                   //id
                   if(searchMap.get("id")!=null && !"".equals(searchMap.get("id"))){
                       predicateList.add(criteriaBuilder.equal(root.get("id").as(Long.class),(Long)searchMap.get("id")));
                   }
                   System.err.println("***name:"+searchMap.get("name"));
                   //name
                   if(searchMap.get("name")!=null && !"".equals(searchMap.get("name"))){
                       predicateList.add(criteriaBuilder.like(root.get("name").as(String.class),"%"+(String)searchMap.get("name")+"%"));
                   }
                   //注意criteriaBuilder.or表示两个查询条件之间是or;cb.and表示查询条件之间是and关系
                   return criteriaBuilder.or(predicateList.toArray(new Predicate[predicateList.size()]));
               }
           };
        }
    }
     
  • 相关阅读:
    UVA 10305 Ordering Tasks(拓扑排序)
    UVA 1152 4 Values whose Sum is 0(中途相遇法)
    UVA 1103 Ancient Messages
    HDU 2141 Can you find it?
    POJ 2456 Aggressive cows(二分+贪心)
    Tallest Cow【模拟】
    Tallest Cow【模拟】
    激光炸弹【模拟】
    激光炸弹【模拟】
    激光炸弹【模拟】
  • 原文地址:https://www.cnblogs.com/lshan/p/11063042.html
Copyright © 2011-2022 走看看