java?jpa如何自定義sql語(yǔ)句
java jpa自定義sql語(yǔ)句
本篇只是為了再次記錄自己又學(xué)習(xí)了jpa的使用,框架原生的通過(guò)解析方法名多適用于單表操作,自定義的sql查詢(xún)則可以解決所有問(wèn)題,記錄些自定義sql語(yǔ)法的記錄,以便后續(xù)參照。
1.多表關(guān)聯(lián)查詢(xún),含條件
@Query(value = "SELECT b FROM QyVideo a JOIN YjQyXx b ON a.qyId = b.id AND a.cameraId = ?1 ")
2.清空表
@Transactional @Modifying @Query(value = "truncate table yj_qy_xx", nativeQuery = true)
注:update、truncate或delete時(shí)必須使用@Modifying和@Transactional對(duì)方法進(jìn)行注解,才能使得ORM知道現(xiàn)在要執(zhí)行的是寫(xiě)操作。
3.模糊查詢(xún)
@Query("select p from WhpzxryzsXxPo p where p.ryxm like concat('%',?1,'%') and p.cyyxqq >= ?2")
4.查詢(xún)結(jié)果為VO
含兩個(gè)實(shí)體類(lèi)
@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) ")
5.使用@Param注解注入?yún)?shù)
分頁(yè)查詢(xún)
@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 );
無(wú)非是把日常的sql中的表名換成了對(duì)應(yīng)的實(shí)體類(lèi)名,接收參數(shù)適用 ?加上第幾個(gè)參數(shù)的幾。當(dāng)然也可使用@Param注解注入?yún)?shù),就變成了使用 :參數(shù) 名稱(chēng)接收。
jpa自定義sql查詢(xún)結(jié)果
很多時(shí)候都會(huì)遇到自定義sql,自定義返回字段,而不是pojo類(lèi)。這個(gè)情況要通過(guò)接口定義返回。
直接上代碼
@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);
對(duì)于這種情況,只返回了兩個(gè)字段,就需要定義一個(gè)接口來(lái)接收(注意AS別名的配置)
public interface WorkCenter { String getField(); String getSize(); }
最后跑一下demo代碼
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
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java 并發(fā)編程的可見(jiàn)性、有序性和原子性
這篇文章主要介紹了Java 并發(fā)編程的可見(jiàn)性、有序性和原子性的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)Java并發(fā)編程,感興趣的朋友可以了解下。2020-11-11Spring Cache自定義緩存key和過(guò)期時(shí)間的實(shí)現(xiàn)代碼
使用 Redis的客戶(hù)端 Spring Cache時(shí),會(huì)發(fā)現(xiàn)生成 key中會(huì)多出一個(gè)冒號(hào),而且有一個(gè)空節(jié)點(diǎn)的存在,查看源碼可知,這是因?yàn)?nbsp;Spring Cache默認(rèn)生成key的策略就是通過(guò)兩個(gè)冒號(hào)來(lái)拼接,本文給大家介紹了Spring Cache自定義緩存key和過(guò)期時(shí)間的實(shí)現(xiàn),需要的朋友可以參考下2024-05-05Spring在多線(xiàn)程下保持事務(wù)的一致性的方法實(shí)現(xiàn)
當(dāng)Spring在多線(xiàn)程環(huán)境下運(yùn)行時(shí),確保事務(wù)一致性是非常重要的,本文主要介紹了Spring在多線(xiàn)程下保持事務(wù)的一致性的方法實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-01-01JAVA實(shí)現(xiàn)異步調(diào)用實(shí)例代碼
在java平臺(tái),實(shí)現(xiàn)異步調(diào)用的角色主要三種角色:調(diào)用者、取貨憑證、真實(shí)數(shù)據(jù)。本篇文章給大家介紹java實(shí)現(xiàn)異步調(diào)用實(shí)例代碼,需要的朋友可以參考下2015-09-09解決lambda表達(dá)式內(nèi)出現(xiàn)異常無(wú)法throw拋出的問(wèn)題
這篇文章主要介紹了lambda表達(dá)式內(nèi)出現(xiàn)異常無(wú)法throw拋出的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09SpringBoot通過(guò)ip獲取歸屬地的幾種方式分享
在日常我們逛網(wǎng)站的時(shí)候會(huì)發(fā)現(xiàn)我們登錄后會(huì)出現(xiàn)歸屬地信息,例如:我在廣州登錄會(huì)顯示廣東廣州,有些更加精確的會(huì)顯示到區(qū)縣,那么我們來(lái)看看有哪些方式來(lái)獲取歸屬地信息,今天我們來(lái)聊一聊2023-09-09Java Idea TranslationPlugin翻譯插件使用解析
這篇文章主要介紹了Java Idea TranslationPlugin翻譯插件使用解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04HttpUtils 發(fā)送http請(qǐng)求工具類(lèi)(實(shí)例講解)
下面小編就為大家?guī)?lái)一篇HttpUtils 發(fā)送http請(qǐng)求工具類(lèi)(實(shí)例講解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-07-07