亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

Mybatis參數傳遞示例代碼

2024-07-14 08:42:00
字體:
來源:轉載
供稿:網友

前言

在實際開發中,大多數情況下都需要對 SQL 傳入參數以獲得想要的結果集,傳入的情況分為兩種情況:

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

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

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

對于開發人員而言,能夠使用 #{} 傳入參數的情況都應該采用這種形式。

傳入參數

接口 Mapper 傳入參數

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

總結通過接口方法傳入參數的情況:

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

配置文件傳入參數

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

全局變量

首先如果是作為全局的參數,可以將配置文件中的參數都寫入到 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 中引用

如果不是作為全局參數,而只是在 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>

參數加載的順序如下

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

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

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

ExampleSQL.xml

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

總結

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


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲欧洲日产国码av系列天堂| 性欧美xxxx视频在线观看| 国产一区二区三区免费视频| 亚洲一区二区三区久久| 538国产精品一区二区在线| 亚洲第一区在线| 亚洲欧洲一区二区三区久久| 欧美专区福利在线| 亚洲图片欧洲图片av| 91久久久久久久一区二区| 亚洲free性xxxx护士白浆| 久久这里只有精品99| 国产精品三级美女白浆呻吟| 国产在线精品一区免费香蕉| 日韩女优人人人人射在线视频| 伊人久久大香线蕉av一区二区| 日韩精品视频在线观看网址| 亚洲午夜未满十八勿入免费观看全集| 日韩av最新在线| 亚洲成avwww人| 日本午夜人人精品| 国产精品白嫩美女在线观看| 日韩欧美一区二区三区久久| 成人国产在线激情| 亚洲综合小说区| 日本成人免费在线| 岛国av一区二区| 国产精品入口日韩视频大尺度| 亚洲精品白浆高清久久久久久| 欧美精品午夜视频| 91夜夜未满十八勿入爽爽影院| 国产69精品久久久久99| 成人精品久久一区二区三区| 91精品久久久久久久| 亚洲中国色老太| 久久综合久久88| 91网站在线看| 欧美成人在线免费视频| 91国产美女在线观看| 亚洲第一色在线| 国产精品av电影| 国产综合福利在线| 久久免费少妇高潮久久精品99| 成人免费网站在线观看| 亚洲欧美一区二区三区四区| 国产日韩在线看| 亚洲精品二三区| 欧美大片免费观看在线观看网站推荐| 国产欧美va欧美va香蕉在| 成人性生交大片免费看小说| 亚洲香蕉成视频在线观看| 性日韩欧美在线视频| 色七七影院综合| 中文字幕亚洲在线| 狠狠色噜噜狠狠狠狠97| 国产精品久久久久av| 国产成人涩涩涩视频在线观看| 亚洲国产精品成人va在线观看| 欧美激情一区二区久久久| 国产一区二区三区久久精品| 亚洲成年人影院在线| 亚洲精品电影久久久| 欧美日韩精品在线观看| 久久亚洲精品小早川怜子66| 91黑丝高跟在线| 久热精品视频在线| 97超视频免费观看| 国产日韩视频在线观看| 日韩第一页在线| 亚洲第一色中文字幕| 亚洲一区二区精品| 青青在线视频一区二区三区| 日韩成人在线视频网站| 久久天天躁狠狠躁夜夜躁2014| 欧美色道久久88综合亚洲精品| 亚洲国产精品久久精品怡红院| 亚洲欧美中文日韩在线| 国产精品91在线观看| 日韩视频永久免费观看| 日韩精品中文字幕在线观看| 久久精品色欧美aⅴ一区二区| 国产成人精品视频在线| 97在线视频精品| 亚洲第一中文字幕在线观看| 亚洲国产欧美一区二区三区同亚洲| 日韩欧美视频一区二区三区| 亚洲欧洲美洲在线综合| 欧美成在线观看| 欧美国产极速在线| 亚洲日本中文字幕免费在线不卡| 精品人伦一区二区三区蜜桃免费| 欧美一级淫片videoshd| 亚洲大胆人体在线| 最近2019中文字幕在线高清| 欧美性猛交xxxx乱大交蜜桃| 欧美午夜宅男影院在线观看| 欧美精品生活片| 亚洲精品在线不卡| 日韩亚洲在线观看| 国产成人jvid在线播放| 国产精品白丝av嫩草影院| 日韩av色综合| 91精品国产777在线观看| 国产精品久久久久久影视| 欧美亚洲成人网| 91精品视频专区| zzjj国产精品一区二区| 午夜精品久久久久久久99热| 欧美日韩高清在线观看| 蜜臀久久99精品久久久久久宅男| 国内外成人免费激情在线视频网站| 精品国产视频在线| 亚洲国内精品在线| 欧美怡春院一区二区三区| 亚洲一区二区三区香蕉| 日韩在线高清视频| 国产精品欧美激情在线播放| 久久精品99久久香蕉国产色戒| 欧美亚洲日本黄色| 欧美性极品xxxx娇小| 日韩中文娱乐网| 国产福利精品av综合导导航| 日韩电影在线观看永久视频免费网站| 日韩欧美在线视频免费观看| 久久久久久国产精品久久| 国产丝袜视频一区| 亚洲女同性videos| 国产区亚洲区欧美区| 日韩人在线观看| 日韩精品中文字幕久久臀| 亚洲一区二区三区视频播放| 亚洲欧洲xxxx| 欧美成人午夜激情视频| 日韩精品免费观看| 亚洲一区二区三区在线视频| 57pao精品| 中文字幕一区日韩电影| 欧美精品久久一区二区| 亚洲电影免费观看高清完整版| 国产精品久久久久久久久借妻| 欧美激情亚洲国产| 欧美激情一区二区三区久久久| 亚洲va欧美va在线观看| 亚洲精品乱码久久久久久按摩观| 精品露脸国产偷人在视频| 成人精品视频在线| 国产一区在线播放| 亚洲国产成人精品电影| 456亚洲影院| 奇门遁甲1982国语版免费观看高清| 国产极品jizzhd欧美| 久久精品国产电影| 中文字幕在线亚洲| 亚洲精品中文字幕av| 国产精品大陆在线观看| 欧美日韩福利在线观看| 欧美日韩成人免费| 亚洲一区第一页| 亚洲色图35p| 欧美激情综合色综合啪啪五月| 91成人性视频| 国产精品你懂得| 狠狠色香婷婷久久亚洲精品| 久久天天躁狠狠躁夜夜av|