亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Jpa數(shù)據(jù)操作以及@Query和@Modifying注解使用方式

 更新時間:2024年07月17日 09:12:32   作者:hippoDocker  
這篇文章主要介紹了Jpa數(shù)據(jù)操作以及@Query和@Modifying注解使用方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

Jpa接口自定義sql注解@Query

@Query注解,使用注解有兩種方式:

  • 一種是JPQL的SQL語言方式
  • 一種是原生SQL的語言

略有區(qū)別,

代碼中具體區(qū)別是nativeQuery 屬性是否為true,我們一般使用的都是原生SQL的語言,需要加nativeQuery = true

1.不帶參數(shù)的sql

    @Query(value = "select count(1) code,hdt.type data from history_design_theme hdt where 1=1 GROUP BY hdt.type",nativeQuery = true)
    List<DataCodeDTO> findHistoryType();

2.一般帶參數(shù)簡單例子

 @Query(value = "select * from history where hdt.type=?1 ",nativeQuery = true)
    List<HistoryDesignTheme> findAllData(String type);

3.帶參@Param注解注入?yún)?shù)

@Query(value = "select * from sys_role sr where sr.role_id in(:idList) and sr.state=:state ",nativeQuery = true)
    List<SysRole> findAllByRoleIdInAndState(@Param(value = "idList") List<Long> idList, @Param(value = "state") Long state);

4.@Modifying注解

@Query注解只有對數(shù)據(jù)查詢的操作,如果你需要進(jìn)行對數(shù)據(jù)的修改那就必須使用@Modifying注解。

JPA 在 EntityManager 中緩存了 find 生成的對象,而@Query 跟 find 和 save 系列方法是兩套不同的體系,@Query 引起的數(shù)據(jù)庫變更 EntityManager 并不能發(fā)現(xiàn),更進(jìn)一步說,使用其它工具或者其它框架修改數(shù)據(jù)庫中的數(shù)據(jù),也不能及時反應(yīng)到 JPA 的 find 系列方法上來。

解決方法就是:

  • 一是避免使用@Query并顯示清理EntityManager中的緩存,
  • 二是Spring Data JPA 提供了另外一種方式則是
@Modifying(clearAutomatically = true)

@Modifying 的 clearAutomatically 屬性為 true 時,執(zhí)行完 modifying query 之后就會清理緩存。

自動清理之后還會帶來一個新的問題,clear 操作清理的緩存中,還包括提交后未 flush 的數(shù)據(jù),

例如調(diào)用 save 而不是 saveAndFlush 就有可能不會立即將修改內(nèi)容更新到數(shù)據(jù)庫中,在 save 之后 flush 之前調(diào)用 @Modifying(clearAutomatically = true) 修飾的方法就有可能導(dǎo)致修改丟失。

如果再要解決這個問題,還可以再加上另外一個屬性

@Modifying(clearAutomatically = true, flushAutomatically = true)

@Modifying 的 flushAutomatically 屬性為 true 時,執(zhí)行 modifying query 之前會先調(diào)用 flush 操作,從而避免數(shù)據(jù)丟失問題。

總結(jié)

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • java中BigDecimal的使用踩坑記錄

    java中BigDecimal的使用踩坑記錄

    這篇文章主要為大家詳細(xì)介紹了java中使用BigDecimal會踩坑的地方以及相關(guān)的解決方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-10-10
  • 獲取系統(tǒng)參數(shù)System.getProperties()與配置文件參數(shù)@Value(“${key}“)

    獲取系統(tǒng)參數(shù)System.getProperties()與配置文件參數(shù)@Value(“${key}“)

    這篇文章主要介紹了獲取系統(tǒng)參數(shù)System.getProperties()與配置文件參數(shù)@Value("${key}"),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-05-05
  • Springboot maven plugin插件原理及作用

    Springboot maven plugin插件原理及作用

    這篇文章主要介紹了Springboot maven plugin插件原理及作用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • springboot動態(tài)定時任務(wù)的實(shí)現(xiàn)方法示例

    springboot動態(tài)定時任務(wù)的實(shí)現(xiàn)方法示例

    這篇文章主要給大家介紹了關(guān)于springboot動態(tài)定時任務(wù)的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • SSH框架網(wǎng)上商城項(xiàng)目第7戰(zhàn)之整合Struts2和Json

    SSH框架網(wǎng)上商城項(xiàng)目第7戰(zhàn)之整合Struts2和Json

    SSH框架網(wǎng)上商城項(xiàng)目第7戰(zhàn)之整合Struts2和Json,打通EasyUI和Struts2之間的交互,感興趣的小伙伴們可以參考一下
    2016-05-05
  • RocketMQ NameServer保障數(shù)據(jù)一致性實(shí)現(xiàn)方法講解

    RocketMQ NameServer保障數(shù)據(jù)一致性實(shí)現(xiàn)方法講解

    這篇文章主要介紹了RocketMQ NameServer保障數(shù)據(jù)一致性實(shí)現(xiàn)方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • SpringBoot啟動失敗的解決方法:A component required a bean of type ‘xxxxxxx‘ that could not be found.

    SpringBoot啟動失敗的解決方法:A component required a&nb

    這篇文章主要介紹了解決SpringBoot啟動失敗:A component required a bean of type ‘xxxxxxx‘ that could not be found.,目前解決方法有兩種,一種是不注入bean的方式,另一種是使用@Component的方式,本文給大家詳細(xì)講解,需要的朋友可以參考下
    2023-02-02
  • Spring?Boot?Rest常用框架注解詳情簡介

    Spring?Boot?Rest常用框架注解詳情簡介

    這篇文章主要介紹了Spring?Boot?Rest常用框架注解,通過將嘗試解釋Spring?Boot?Rest?API的不同注釋,這些注釋是Spring?Boot中REST?API所必需的,需要的朋友可以參考一下
    2022-06-06
  • Mybatis延遲加載原理和延遲加載配置詳解

    Mybatis延遲加載原理和延遲加載配置詳解

    這篇文章主要介紹了Mybatis延遲加載原理和延遲加載配置詳解,MyBatis中的延遲加載,也稱為懶加載,是指在進(jìn)行表的關(guān)聯(lián)查詢時,按照設(shè)置延遲規(guī)則推遲對關(guān)聯(lián)對象的select查詢,需要的朋友可以參考下
    2023-10-10
  • 快速搭建一個SpringBoot項(xiàng)目(純小白搭建教程)

    快速搭建一個SpringBoot項(xiàng)目(純小白搭建教程)

    本文主要介紹了快速搭建一個SpringBoot項(xiàng)目,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11

最新評論