使用jpa原生sql@Query操作增刪改查
更新時間:2021年06月11日 10:56:03 作者:燎草
這篇文章主要介紹了使用jpa原生sql@Query操作增刪改查,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
jpa原生sql@Query操作增刪改查
1、jpa 原生update的sql語句:
1.命名參數(shù)(推薦使用此方式):可以定義好參數(shù)名,賦值時使用@Param("參數(shù) 名"), 而不用管順序。
為@Query注解傳遞參數(shù)的方式1:命名參數(shù)
/*@Query("delete from product where p.id=:id")
List<Person> testQueryAnnotationParams2(@Param("status") String status, @Param("id") String id);
void updateByProductId(@Param("id") String id);*/
2.索引參數(shù)如下所示,索引值從1開始,查詢中"?X"個數(shù)需要與方法定義的參數(shù)個數(shù)相一致,并且順序也要一致。
@Modifying(clearAutomatically=true) @Query(value = "update Product set status=1 where id=?1",nativeQuery = true) void updateByProductId(String id);
2、jpa 原生delete的sql語句:
@Modifying(clearAutomatically=true) @Query(value = "delete from Productwhere id=?1",nativeQuery = true) void delByProductId(String id);
3、jpa 原生insert的sql語句:
@Modifying(clearAutomatically=true) @Query(value="insert into product(id,name,category,description,status) values(?1,?2,?3,?4,?5)",nativeQuery = true) void addProduct(String id,String name,String cagetory,String description,String status);
4、jpa 原生insert的sql語句:
還沒弄懂。。。。。。。。。。。。
//jpa 多對多關系的表聯(lián)合查詢 DAO層
@Query(value = "select s from SysUserDTO s left join s.sysOrgDTOSet o where (?1 is null or s.username like ?1) and (?2 is null or o.name like ?2)")
Page<SysUserDTO> findByUsernameAndOrgName(String username, String orgName, Pageable pageable);
// service層
public Page<SysUserDTO> findByUsernameAndOrgName(String username, String orgName, Pageable pageable){
String name = (username==null)?null:"%"+username+"%";
String orgname = (orgName==null)?null:"%"+orgName+"%";
return sysUserDAO.findByUsernameAndOrgName(name,orgname,pageable);
}
JPA 用原生sql語句執(zhí)行操作
這里在 @Query 注解中增加一個 nativeQuery = true 的屬性,就可以采用原生 SQL 語句的方式來編寫查詢。
@Query(nativeQuery = true, value = "SELECT * FROM AUTH_USER WHERE name = :name1 OR name = :name2 ")
List<UserDO> findSQL(@Param("name1") String name1, @Param("name2") String name2);
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

