• <noscript id="ecgc0"><kbd id="ecgc0"></kbd></noscript>
    <menu id="ecgc0"></menu>
  • <tt id="ecgc0"></tt>

    Spring Data JPA存儲過程的使用

    我們在數據庫中進行復雜的操作時會用到存儲過程,在數據庫中存儲過程是可被外部挪用的一種數據對象,可以用來封裝復雜的sql邏輯,那么我們在Spring Data JPA中是若何挪用存儲過程的呢?這就需要我們今天要講的@Procedure注解了。

    東西/原料

    • IntelliJ IDEA
    • mysql

    方式/步調

    1. 1

      起首我們來看一下@Procedure注解的源碼,經由過程源碼可以進修JPA對存儲過程的撐持。下圖中value暗示數據庫里面存儲過程的名稱,procedureName也是數據庫里面存儲過程的名稱。

    2. 2

      接下來我們在數據庫中建立一個存儲過程,這個存儲過程有兩個參數,別離是輸入和輸出。

      CREATE DEFINER=`root`@`localhost` PROCEDURE `pluslinout`(IN arg int, OUT res int)

      BEGIN

      SELECT(arg + 10) into res;

      END


      我們還可以建立有一個只有輸入的存儲過程,如下所示:

      CREATE DEFINER=`root`@`localhost` PROCEDURE `pluslin`(IN arg int)

      BEGIN

      SELECT(arg + 10) into arg;

      END

    3. 3

      存儲過程的挪用,在UserRepository中,利用@Procedure(name="pluslin")和@Procedure(name="pluslinout")去挪用存儲過程。

    4. 4

      在User實體類中存儲過程需要利用@NamedStoredProcedureQueries注解,將存儲過程綁心猿意馬到JPA的數據庫表中,procedureName是存儲過程的名字,name是JPA中存儲過程的名字,寫當作一致即可。@StoredProcedureParameter注解指心猿意馬存儲過程中利用的IN/OUT參數。

      @NamedStoredProcedureQueries({
             @NamedStoredProcedureQuery(name = "pluslin", procedureName = "pluslin", parameters = {
                     @StoredProcedureParameter(mode = ParameterMode.IN, name = "arg", type = Integer.class) }),
             @NamedStoredProcedureQuery(name = "pluslinout", procedureName = "pluslinout", parameters = {
                     @StoredProcedureParameter(mode = ParameterMode.IN, name = "arg", type = Integer.class),
                     @StoredProcedureParameter(mode = ParameterMode.OUT, name = "res", type = Integer.class) }) })

    5. 5

      最后在單位測試中測試這兩個挪用存儲過程的方式,測試的方式如下圖所示,測試的成果不再展示了,可以自行操練。

    注重事項

    • 注重實體類中需要指心猿意馬存儲過程到數據庫的綁心猿意馬關系。
    • 發表于 2019-07-02 17:02
    • 閱讀 ( 746 )
    • 分類:其他類型

    你可能感興趣的文章

    相關問題

    0 條評論

    請先 登錄 后評論
    admin
    admin

    0 篇文章

    作家榜 ?

    1. xiaonan123 189 文章
    2. 湯依妹兒 97 文章
    3. luogf229 46 文章
    4. jy02406749 45 文章
    5. 小凡 34 文章
    6. Daisy萌 32 文章
    7. 我的QQ3117863681 24 文章
    8. 華志健 23 文章

    推薦文章

    聯系我們:uytrv@hotmail.com 問答工具
  • <noscript id="ecgc0"><kbd id="ecgc0"></kbd></noscript>
    <menu id="ecgc0"></menu>
  • <tt id="ecgc0"></tt>
    久久久久精品国产麻豆