您好,登錄后才能下訂單哦!
本篇內容介紹了“java jpa怎么自定義sql語句”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
本篇只是為了再次記錄自己又學習了jpa的使用,框架原生的通過解析方法名多適用于單表操作,自定義的sql查詢則可以解決所有問題,記錄些自定義sql語法的記錄,以便后續參照。
@Query(value = "SELECT b FROM QyVideo a JOIN YjQyXx b ON a.qyId = b.id AND a.cameraId = ?1 ")
@Transactional @Modifying @Query(value = "truncate table yj_qy_xx", nativeQuery = true)
注:update、truncate或delete時必須使用@Modifying和@Transactional對方法進行注解,才能使得ORM知道現在要執行的是寫操作。
@Query("select p from WhpzxryzsXxPo p where p.ryxm like concat('%',?1,'%') and p.cyyxqq >= ?2")
含兩個實體類
@Query(value = "SELECT new com.kun.aqsczt.vo.FxjzfbVo(u, seventinfo) FROM SSmsInfo u left join SEventInfo seventinfo on u.referId = seventinfo.eventId WHERE (:referType IS NULL OR :referType IS '' OR u.referType = :referType) AND (:isSend IS NULL OR :isSend IS '' OR u.isSend = :isSend) ")
分頁查詢
@Query(value = "SELECT a FROM CEiWorkaccMaybe a " + "WHERE (:psnName IS NULL OR :psnName IS '' OR a.psnName LIKE %:psnName%) " + "AND (:commName IS NULL OR :commName IS '' OR a.commName LIKE %:commName%) " + "AND (:idCard IS NULL OR :idCard IS '' OR a.idCard LIKE %:idCard%) " + "AND (:doctorDateStart IS NULL OR :doctorDateStart IS '' OR a.doctorDate >= :doctorDateStart) " + "AND (:doctorDateEnd IS NULL OR :doctorDateEnd IS '' OR a.doctorDate <= :doctorDateEnd) " ) Page<CEiWorkaccMaybe> getSuspectedWorkAccidentVerification( @Param("psnName") String psnName, @Param("commName") String commName, @Param("idCard") String idCard, @Param("doctorDateStart") String doctorDateStart, @Param("doctorDateEnd") String doctorDateEnd, Pageable pageable );
無非是把日常的sql中的表名換成了對應的實體類名,接收參數適用 ?加上第幾個參數的幾。當然也可使用@Param注解注入參數,就變成了使用 :參數 名稱接收。
很多時候都會遇到自定義sql,自定義返回字段,而不是pojo類。這個情況要通過接口定義返回。
@Query(value = "select m.field AS field,COUNT(m.field) AS size from MigrationObject m where m.xmlName = ?1 and m.groupName = ?2 group by m.field") List<WorkCenter> getKey(String xmlName, String groupName);
對于這種情況,只返回了兩個字段,就需要定義一個接口來接收(注意AS別名的配置)
public interface WorkCenter { String getField(); String getSize(); }
List<WorkCenter> list = migrationObjectRepository.getKey("EN_Work centerResource.xml","Key"); for (WorkCenter workCenter:list){ System.out.println(workCenter.getField()); System.out.println(workCenter.getSize()); }
ARBPL
5
SPRAS
2
CANUM
2
ENDDA
1
WERKS
5
“java jpa怎么自定義sql語句”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。