使用JPA自定義SQL查詢(xún)結(jié)果
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
JPA的SQL查詢(xún)
一 點(diǎn)睛
JAP通過(guò)SQL查詢(xún)一般有兩種方法:通過(guò)NamedQuery查詢(xún)和使用@Query查詢(xún)。
二 JPA的NamedQuery查詢(xún)
1 說(shuō)明
Spring Data JPA支持用JPA的NameQuery來(lái)定義查詢(xún)方法,即一個(gè)名稱(chēng)映射一個(gè)查詢(xún)語(yǔ)句。
2 定義
@Entity
@NamedQuery(name = "Person.withNameAndAddressNamedQuery",
query = "select p from Person p where p.name=?1 and address=?2")
public class Person {
......
}
3 使用方法
public interface PersonRepo extends JpaRepository<Person,Long>{
//使用的是NameQuery里定義的查詢(xún)語(yǔ)句,而不是根據(jù)方法名稱(chēng)來(lái)查詢(xún)
Person withNameAndAddressNamedQuery(String name,String address);
}
三 使用@Query查詢(xún)
1 使用參數(shù)索引
public interface PersonRepo extends JpaRepository<Person,Long>{
@Query("select p from Person p where p.address= ?1")
List<Person> findByAddress(String address);
}
2 使用命名參數(shù)
public interface PersonRepo extends JpaRepository<Person,Long>{
@Query("select p from Person p where p.name= :name and p.address= :address")
Person withNameAndAddressQuery(@Param("name")String name,@Param("address")String address);
}
3 更新查詢(xún)
public interface PersonRepo extends JpaRepository<Person,Long>{
@Modifying
@Transactional
@Query("update Person p set p.name=?1")
int setName(String name);//表示更新語(yǔ)句影響的行數(shù)
}
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
java對(duì)接微信支付之JSAPI支付(微信公眾號(hào)支付)
這篇文章主要給大家介紹了關(guān)于java對(duì)接微信支付之JSAPI支付(微信公眾號(hào)支付)的相關(guān)資料,微信JSAPI支付是近年來(lái)非常流行的一種支付方式,它使用了微信支付的SDK和demo來(lái)實(shí)現(xiàn)支付接口的對(duì)接,需要的朋友可以參考下2023-07-07
深入學(xué)習(xí)Java同步機(jī)制中的底層實(shí)現(xiàn)
在多線程編程中我們會(huì)遇到很多需要使用線程同步機(jī)制去解決的并發(fā)問(wèn)題,這些同步機(jī)制是如何實(shí)現(xiàn)的呢?下面和小編來(lái)一起學(xué)習(xí)吧2019-05-05
使用mybatis進(jìn)行數(shù)據(jù)插入時(shí)返回自增id的方法及注意點(diǎn)
這篇文章主要給大家介紹了關(guān)于使用mybatis進(jìn)行數(shù)據(jù)插入時(shí)返回自增id的方法及注意點(diǎn),在插入一條數(shù)據(jù)之后需要返回它的自增主鍵id,因?yàn)椴迦氲膶?shí)體類(lèi)數(shù)據(jù)id為空,后面的邏輯還需要這個(gè)id,需要的朋友可以參考下2023-09-09
Maven中dependencyManagement管理項(xiàng)目依賴(lài)項(xiàng)
在開(kāi)發(fā)?Java?項(xiàng)目時(shí),管理和協(xié)調(diào)依賴(lài)項(xiàng)的版本號(hào)是一項(xiàng)重要而繁瑣的任務(wù),本文主要介紹了Maven中dependencyManagement管理項(xiàng)目依賴(lài)項(xiàng),具有一定的參考價(jià)值,感興趣的可以了解一下2024-01-01
Maven 項(xiàng)目生成jar運(yùn)行時(shí)提示“沒(méi)有主清單屬性”
這篇文章主要介紹了Maven 項(xiàng)目生成jar運(yùn)行時(shí)提示“沒(méi)有主清單屬性”,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03

