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

Mybatis參數(shù)傳遞示例代碼

 更新時間:2018年08月10日 11:15:21   作者:DaleZhang  
這篇文章主要給大家介紹了關于Mybatis參數(shù)傳遞的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

前言

在實際開發(fā)中,大多數(shù)情況下都需要對 SQL 傳入?yún)?shù)以獲得想要的結(jié)果集,傳入的情況分為兩種情況:

1、SQL語句的拼接,比如表名、like 條件等;在 mybatis 中使用 ${} 包裹參數(shù),mybati 直接對其進行字符串替換

2、SQL 中作為條件輸入的參數(shù),這種情況下,SQL 允許使用 ? 作為占位符來代替參數(shù),在 mybatis 中使用 #{} 包裹參數(shù),使用占位符有以下幾點好處:

  • mybatis 會對包裹的變量進行轉(zhuǎn)義和類型檢查,避免以 SQL 注入的方式攻擊數(shù)據(jù)庫
  • 默認情況下,mybatis 采用的是預編譯的方式,對于數(shù)據(jù)庫而言 SQL 本身沒有變化,變化的是傳入的參數(shù),數(shù)據(jù)庫只會編譯一次,而不會因為作為條件的參數(shù)變化而重新編譯,節(jié)約了 SQL 執(zhí)行總時間

對于開發(fā)人員而言,能夠使用 #{} 傳入?yún)?shù)的情況都應該采用這種形式。

傳入?yún)?shù)

接口 Mapper 傳入?yún)?shù)

在 xml 中寫 SQL 的時候注意到 parameterType 參數(shù),剛接觸的時候就有疑惑,如果有多個參數(shù)該如何指定。原來這是一個可選參數(shù),Mybatis 本身就可以通過 TypeHandler 推斷出具體傳入語句的參數(shù)。

總結(jié)通過接口方法傳入?yún)?shù)的情況:

  • 參數(shù)使用添加@Param注解,或者使用 '-parameters' 編譯選項并啟用 useActualParamName 選項(默認開啟)來編譯項目
  • 特別的,如果參數(shù)是Javabean,在SQL中引用參數(shù)的時候可以直接使用屬性訪問符,而無需通過 get 方法。eg: #{Javabean.id}

配置文件傳入?yún)?shù)

有時候為了將表名或者 schema 可配置化,將變量寫到配置文件中,避免未來表名變化造成大的改動。

全局變量

首先如果是作為全局的參數(shù),可以將配置文件中的參數(shù)都寫入到 Javabean 中,使用的時候通過接口 Mapper 傳入即可。在 Spring 中

  • 在 Spring 配置文件中,使用 PropertiesFactoryBean 指定配置文件路徑,指定 id
  • 在 Javabean 文件中使用通過 @Value("#{id['name']}") 設置變量,并使用 @Component 注解該Javabean
  • 在接口 Mapper 中傳入該 Javabean

applicationContext.xml

 <bean id="exampleid" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
  <property name="locations">
   <array>
    <value>classpath:<name>.properties</value>
   </array>
  </property>
 </bean>

ExampleProperty.java

 @Component("exampleProperty")
 public class ExampleProperty {
 
  @Value("#{exampleid['name']}")
  public String name;
  ...
 }

引用

 @Resource
 private ExampleProperty exampleProperty;

只在 mybatis SQL 中引用

如果不是作為全局參數(shù),而只是在 SQL 中使用,則可以通過 mybatis 的配置文件 mybatis-config.xml 引入,這里引入的變量所有 SQL 的 xml 中都可以通過 ${} 的方式引入。

mybatis-config.xml

 <properties resource="<name>.properties">
  <property name="name" value="exampleName"/>
  <property name="id" value="exampleId"/>
  ...
 </properties>

參數(shù)加載的順序如下

  • 首先包裹的參數(shù)作為默認值(推薦引入配置文件的同時也設定默認參數(shù))
  • 加載 resource 中指定的配置文件,如果已指定了該參數(shù)則覆蓋
  • 如果通過接口 Mapper 傳入了同名參數(shù),接口 Mapper 傳入的參數(shù)覆蓋原有參數(shù)值

另外需要注意的是通過 mybatis-config.xml 設定的參數(shù),在 SQL 中無法直接使用 #{} 的方式引入,而有時候又想要用占位符的方式進行預編譯,除了使用接口 Mapper 傳入?yún)?shù)外,還可以使用<bind>

bind 元素可以從 OGNL 表達式中創(chuàng)建一個變量并將其綁定到上下文

ExampleSQL.xml

 <mapper namespace="**.ExampleMapper">
  <select id="" resultType="string">
   <bind name="id" value="'${id}'"/>
   SELECT * FROM ××.×× 
   WHERE ID = #{id}
   ...
  </select>
 </mapper>

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關文章

  • Java方法簽名的獲取實例代碼

    Java方法簽名的獲取實例代碼

    這篇文章主要介紹了Java方法簽名的獲取實例代碼,分享了相關代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-02-02
  • mybatisPlus批量插入優(yōu)化加快性能

    mybatisPlus批量插入優(yōu)化加快性能

    這篇文章主要介紹了mybatisPlus批量插入優(yōu)化加快性能,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-12-12
  • Mybatis動態(tài)sql中@Param使用詳解

    Mybatis動態(tài)sql中@Param使用詳解

    這篇文章主要介紹了Mybatis動態(tài)sql中@Param使用詳解,當方法的參數(shù)為非自定義pojo類型,且使用了動態(tài)sql,那么就需要在參數(shù)前加上@Param注解,需要的朋友可以參考下
    2023-10-10
  • Java編譯器用maven打war包出錯解決辦法

    Java編譯器用maven打war包出錯解決辦法

    這篇文章主要介紹了用maven打war包出錯的解決辦法,需要的朋友可以參考下
    2018-03-03
  • Springboot集成RabbitMQ死信隊列的實現(xiàn)

    Springboot集成RabbitMQ死信隊列的實現(xiàn)

    在大多數(shù)的MQ中間件中,都有死信隊列的概念。本文主要介紹了Springboot集成RabbitMQ死信隊列的實現(xiàn),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 國內(nèi)分布式框架Dubbo使用詳解

    國內(nèi)分布式框架Dubbo使用詳解

    這篇文章主要為大家介紹了國內(nèi)分布式框架Dubbo使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • Java線程中synchronized和volatile關鍵字的區(qū)別詳解

    Java線程中synchronized和volatile關鍵字的區(qū)別詳解

    這篇文章主要介紹了Java線程中synchronized和volatile關鍵字的區(qū)別詳解,synchronzied既能夠保障可見性,又能保證原子性,而volatile只能保證可見性,無法保證原子性,volatile不需要加鎖,比synchronized更輕量級,不會阻塞線程,需要的朋友可以參考下
    2024-01-01
  • 在SpringBoot環(huán)境中使用Mockito進行單元測試的示例詳解

    在SpringBoot環(huán)境中使用Mockito進行單元測試的示例詳解

    Mockito特別適用于在Spring Boot環(huán)境中進行單元測試,因為它能夠輕松模擬Spring應用中的服務、存儲庫、客戶端和其他組件,通過使用Mockito,開發(fā)者可以模擬外部依賴,從而使單元測試更加獨立和可靠,本文給大家介紹了在Spring Boot環(huán)境中使用Mockito進行單元測試
    2024-01-01
  • SpringBoot優(yōu)雅實現(xiàn)計算方法執(zhí)行時間

    SpringBoot優(yōu)雅實現(xiàn)計算方法執(zhí)行時間

    這篇文章主要為大家詳細介紹了SpringBoot中優(yōu)雅實現(xiàn)計算方法執(zhí)行時間的相關方法,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2025-04-04
  • 聊聊Spring Boot 如何集成多個 Kafka

    聊聊Spring Boot 如何集成多個 Kafka

    這篇文章主要介紹了Spring Boot 集成多個 Kafka的相關資料,包括配置文件,生成者和消費者配置過程,本文通過實例代碼給大家介紹的非常詳細,需要的朋友參考下吧
    2023-10-10

最新評論

赤峰市| 阿勒泰市| 津南区| 石楼县| 府谷县| 唐山市| 德惠市| 七台河市| 涞源县| 明星| 土默特右旗| 吉林省| 青浦区| 西城区| 平塘县| 裕民县| 博湖县| 陇西县| 河东区| 游戏| 天气| 荔波县| 安岳县| 永善县| 白银市| 弥渡县| 萍乡市| 万年县| 黄平县| 得荣县| 拜泉县| 申扎县| 文水县| 博乐市| 合川市| 汕尾市| 阳曲县| 东源县| 都江堰市| 乐平市| 浦北县|