最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

Jpa接口自定義sql注解@Query

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

  • 一種是JPQL的SQL語(yǔ)言方式
  • 一種是原生SQL的語(yǔ)言

略有區(qū)別,

代碼中具體區(qū)別是nativeQuery 屬性是否為true,我們一般使用的都是原生SQL的語(yǔ)言,需要加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ù)簡(jiǎn)單例子

 @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注解只有對(duì)數(shù)據(jù)查詢的操作,如果你需要進(jìn)行對(duì)數(shù)據(jù)的修改那就必須使用@Modifying注解。

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

解決方法就是:

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

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

自動(dòng)清理之后還會(huì)帶來(lái)一個(gè)新的問(wèn)題,clear 操作清理的緩存中,還包括提交后未 flush 的數(shù)據(jù),

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

如果再要解決這個(gè)問(wèn)題,還可以再加上另外一個(gè)屬性

@Modifying(clearAutomatically = true, flushAutomatically = true)

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

總結(jié)

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

相關(guān)文章

  • Java Fluent Mybatis 聚合查詢與apply方法詳解流程篇

    Java Fluent Mybatis 聚合查詢與apply方法詳解流程篇

    Java中常用的ORM框架主要是mybatis, hibernate, JPA等框架。國(guó)內(nèi)又以Mybatis用的多,基于mybatis上的增強(qiáng)框架,又有mybatis plus和TK mybatis等。今天我們介紹一個(gè)新的mybatis增強(qiáng)框架 fluent mybatis關(guān)于聚合查詢、apply方法詳解
    2021-10-10
  • java實(shí)戰(zhàn)技巧之if-else代碼優(yōu)化技巧大全

    java實(shí)戰(zhàn)技巧之if-else代碼優(yōu)化技巧大全

    代碼中如果if-else比較多,閱讀起來(lái)比較困難,維護(hù)起來(lái)也比較困難,很容易出bug,下面這篇文章主要給大家介紹了關(guān)于java實(shí)戰(zhàn)技巧之if-else代碼優(yōu)化技巧的相關(guān)資料,需要的朋友可以參考下
    2022-02-02
  • SpringBoot實(shí)現(xiàn)輕量級(jí)動(dòng)態(tài)定時(shí)任務(wù)管控及組件化的操作步驟

    SpringBoot實(shí)現(xiàn)輕量級(jí)動(dòng)態(tài)定時(shí)任務(wù)管控及組件化的操作步驟

    文章介紹了一種在SpringBoot中實(shí)現(xiàn)動(dòng)態(tài)定時(shí)任務(wù)的解決方案,基于COLA架構(gòu)理論,封裝到了組件層,該組件支持類級(jí)別和方法級(jí)別的定時(shí)任務(wù)注冊(cè),并提供了易用性和擴(kuò)展性,組件使用Maven形式引入,并且可以通過(guò)YAML配置文件進(jìn)行設(shè)置,感興趣的朋友一起看看吧
    2024-11-11
  • 使用sts工具、SpringBoot整合mybatis的詳細(xì)步驟

    使用sts工具、SpringBoot整合mybatis的詳細(xì)步驟

    這篇文章主要介紹了使用sts工具、SpringBoot整合mybatis的詳細(xì)步驟,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • Jmeter測(cè)試必知的名詞及環(huán)境搭建

    Jmeter測(cè)試必知的名詞及環(huán)境搭建

    我們本章開(kāi)始學(xué)習(xí)Jmeter,后續(xù)還會(huì)有RF以及LoadRunner 的介紹,為什么要學(xué)習(xí)Jmeter,它主要是用來(lái)做性能測(cè)試的,其中它也需要間接或直接的需要用到抓包工具
    2021-09-09
  • Springboot?+redis+谷歌開(kāi)源Kaptcha實(shí)現(xiàn)圖片驗(yàn)證碼功能

    Springboot?+redis+谷歌開(kāi)源Kaptcha實(shí)現(xiàn)圖片驗(yàn)證碼功能

    這篇文章主要介紹了Springboot?+redis+?歌開(kāi)源Kaptcha實(shí)現(xiàn)圖片驗(yàn)證碼功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-01-01
  • Java堆&優(yōu)先級(jí)隊(duì)列示例講解(上)

    Java堆&優(yōu)先級(jí)隊(duì)列示例講解(上)

    這篇文章主要通過(guò)示例詳細(xì)為大家介紹Java中的堆以及優(yōu)先級(jí)隊(duì)列,文中的示例代碼講解詳細(xì),對(duì)我們了解java有一定幫助,需要的可以參考一下
    2022-03-03
  • springboot新建項(xiàng)目jdk只有17/21,無(wú)法選中1.8解決辦法

    springboot新建項(xiàng)目jdk只有17/21,無(wú)法選中1.8解決辦法

    最近博主也有創(chuàng)建springboot項(xiàng)目,發(fā)現(xiàn)了IntelliJ IDEA在通過(guò)Spring Initilizer初始化項(xiàng)目的時(shí)候已經(jīng)沒(méi)有java8版本的選項(xiàng)了,這里給大家總結(jié)下,這篇文章主要給大家介紹了springboot新建項(xiàng)目jdk只有17/21,無(wú)法選中1.8的解決辦法,需要的朋友可以參考下
    2023-12-12
  • 淺析Java 并發(fā)編程中的synchronized

    淺析Java 并發(fā)編程中的synchronized

    這篇文章主要介紹了Java 并發(fā)編程中的synchronized的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)Java并發(fā)編程,感興趣的朋友可以了解下
    2020-12-12
  • 詳解SpringBoot?統(tǒng)一后端返回格式的方法

    詳解SpringBoot?統(tǒng)一后端返回格式的方法

    今天我們來(lái)聊一聊在基于SpringBoot前后端分離開(kāi)發(fā)模式下,如何友好的返回統(tǒng)一的標(biāo)準(zhǔn)格式以及如何優(yōu)雅的處理全局異常,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2022-05-05

最新評(píng)論

周至县| 都昌县| 汝南县| 潢川县| 绥滨县| 屯门区| 临西县| 图们市| 大田县| 成安县| 堆龙德庆县| 临夏县| 苗栗县| 昂仁县| 新绛县| 平陆县| 固始县| 沧源| 专栏| 景泰县| 卓尼县| 乐亭县| 区。| 思茅市| 玉林市| 连城县| 遂溪县| 广丰县| 达拉特旗| 普格县| 洛川县| 上高县| 江油市| 扬中市| 龙海市| 安陆市| 准格尔旗| 寻乌县| 邹城市| 荣成市| 怀化市|