随笔 - 836  文章 - 1 评论 - 40 阅读 - 102万
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

参考: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()]));
           }
       };
    }
}
复制代码

 

 
posted on   lshan  阅读(768)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
历史上的今天:
2018-06-21 sonar 的使用
2018-06-21 Ubuntu 安装VNC
2018-06-21 HttpUtils
2018-06-21 Java 反编译工具
2018-06-21 时区的转化
点击右上角即可分享
微信分享提示