日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Spring JPA使用CriteriaBuilder动态构造查询

發布時間:2025/3/20 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring JPA使用CriteriaBuilder动态构造查询 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

版權聲明:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
本文鏈接:https://www.cnblogs.com/mzdljgz/p/11495723.html

在使用Spring JPA提供的方法只能進行簡單的CRUD,如果遇到復雜的情況就需要我們動態來構建查詢條件了。這里我們來看使用CriteriaBuilder如何來構造查詢。
核心代碼:

  @PersistenceContextprivate EntityManager entityManager;/*** 查詢所有菜單** @return*/public List<MenuInfo> findAllMenu() {CriteriaBuilder builder = entityManager.unwrap(SessionImpl.class).getCriteriaBuilder();CriteriaQuery<MenuInfo> criteriaQuery = builder.createQuery(MenuInfo.class);Root<MenuInfo> root = criteriaQuery.from(MenuInfo.class);criteriaQuery.select(root);criteriaQuery.where(builder.equal(root.get("systemFlag"), Constant.SystemFlag.MANAGE_B));return entityManager.unwrap(SessionImpl.class).createQuery(criteriaQuery).getResultList();}

?

  • 調用entityManager.unwrap(SessionImpl.class).getCriteriaBuilder();來獲取CriteriaBuilder。CriteriaBuilder可以用于創建CriteriaQuery、CriteriaUpdate和CriteriaDelete。除此之外類似count、max等函數也是由CriteriaBuilder來創建的。其中Entitymanager可以使用@PersistenceContext注解來進行注入。
  • 調用criteriaBuilder.createQuery來創建CriteriaQuery。其中createQuery的參數是Query返回值類型。
  • 調用criteriaQuery.from(MenuInfo.class)。參數是對應于MenuInfo表的實體類,query.from類似于sql中的from語句,該方法的執行等價于sql中的from MenuInfo。
  • 調用 criteriaQuery.select創建映射。 criteriaQuery.select(criteriaBuilder.count(root.get(“id”)))等價于select count(id)。如果執行criteriaQuery.select(root)則等價于select *。
  • 使用CriteriaBuilder構造查詢條件Predicate,該predicate也就是在where后面的條件子句。
  • 執行查詢獲取數據。

轉載于:https://www.cnblogs.com/mzdljgz/p/11495723.html

總結

以上是生活随笔為你收集整理的Spring JPA使用CriteriaBuilder动态构造查询的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。