国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|JavaScript|易語言|

服務器之家 - 編程語言 - Java教程 - Mybatis參數傳遞示例代碼

Mybatis參數傳遞示例代碼

2021-05-25 12:17DaleZhang Java教程

這篇文章主要給大家介紹了關于Mybatis參數傳遞的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

前言

在實際開發中,大多數情況下都需要對 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

?
1
2
3
4
5
6
7
<bean id="exampleid" class="org.springframework.beans.factory.config.propertiesfactorybean">
 <property name="locations">
  <array>
   <value>classpath:<name>.properties</value>
  </array>
 </property>
</bean>

exampleproperty.java

?
1
2
3
4
5
6
7
@component("exampleproperty")
public class exampleproperty {
 
 @value("#{exampleid['name']}")
 public string name;
 ...
}

引用

?
1
2
@resource
private exampleproperty exampleproperty;

只在 mybatis sql 中引用

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

mybatis-config.xml

?
1
2
3
4
5
<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

?
1
2
3
4
5
6
7
8
<mapper namespace="**.examplemapper">
 <select id="" resulttype="string">
  <bind name="id" value="'${id}'"/>
  select * from ××.××
  where id = #{id}
  ...
 </select>
</mapper>

總結

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

原文鏈接:https://juejin.im/post/5b546f195188251abf415c0d

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 日韩免费 | 99精品国产一区二区三区 | 日韩欧美中文字幕在线视频 | 极品粉嫩饱满一线天在线 | 欧美在线亚洲 | 超碰在线9 | 色综合色综合 | 欧美日韩中文字幕 | 伊人网在线视频观看 | 国产精品一区av | 狠狠综合| 亚洲一区二区精品 | 国产一区二区久久 | 欧美午夜在线观看 | 欧美日韩专区 | 国产精品久久久久久久久久东京 | 亚洲成人一区 | 成人在线看片 | 精品成人18 | 日本久久久久久 | 亚洲狠狠爱一区二区三区 | 日韩成人在线电影 | 国产精品成人国产乱一区 | 国产高清精品在线 | 国产一区二区三区不卡在线观看 | 六月婷操| 亚洲精品www久久久久久广东 | 成人在线观看免费视频 | 国产精品久久久久精 | 日韩不卡 | 日韩午夜| 全部古装三级在线播放 | 免费黄网站在线观看 | 亚洲国产精品一区二区久久,亚洲午夜 | 亚洲国产精品成人精品 | 久久草| 亚洲一区自拍偷拍 | 黄色美女网站免费 | 色综合久 | 国产一区二区精品 | 欧美日韩亚洲成人 |