mybatis傳參問題總結

一、 傳入單個參數
當傳入的是單個參數時,方法中的參數名和sql語句中參數名一致即可

List<User> getUser(int id);<select id="getUser" parameterType="java.lang.Integer"  resultType="com.lee.test.pojo.User">select * from t_user where id = #{id}
</select>

二、傳入的是多個參數
1、當傳入的是多個參數時,可以通過#{argindex}來對應參數,索引從0開始,其中sql語句中的參數順序與方法中的參數順序一致

List<User> getUser(int id, String name);<select id="getUser"  resultType="com.lee.test.pojo.User">select * from t_user where id = #{arg0} and name =#{arg1}
</select>

2、使用@Param注解來指定對應的參數,其中@param中的參數與sql語句中的參數名一致

List<User> getUser(@param("id")int id, @param("name")String name);<select id="getUser"  resultType="com.lee.test.pojo.User">select * from t_user where id = #{id} and name =#{name}
</select>

3、使用map封裝多個參數,其中map中的key和sql語句中的參數名一致

List<User> getUser(HashMap map);<select id="getUser" parameterType="hashMap" resultType="com.lee.test.pojo.User">select * from t_user where id = #{id} and name =#{name}
</select>

三、傳入的參數是一個實體類
當傳入的是一個實體類,mybatis會根據實體類中字段自動與sql中參數關聯

List<User> getUser(User user);<select id="getUser" parameterType="com.lee.test.pojo.User" resultType="com.lee.test.pojo.User">select * from t_user where id = #{id} and name =#{name}
</select>

四、當傳入的參數包含了數組
如果傳入的參數中包括了數組,可以使用mybatis中動態sql的foreach標簽
標簽屬性說明:
(1)collection :collection屬性對應有三種,list,array和map
(2)item : 在迭代每一個元素時起的別名,與#{}參數名一致
(3)index :這個屬性用來指定用來訪問迭代集合下標的名稱。如:index="myIndex",則#{myIndex}用來訪問當前迭代的下標,下標從0開始。
(4)open :拼接字符串的前綴,如"("
(5)close :拼接字符串的后綴,如")"
(6)separator :分隔符,表示迭代時每個元素之間的分隔符號,如","

1、如果傳入的是一個list

List<User> getUser(List<Integer> ids);<select id="getUser" resultType="com.lee.test.pojo.User">select * from t_user where id in<foreach collection="list" item="id" index="index" open="(" close=")" separator=",">#{id}</foreach></select>

如果傳入的list ids為1,2,3
這句sql語句相當于 select * from t_user where id in (1,2,3)

2、如果傳入的是一個array

List<User> getUser(int[] ids);<select id="getUser" resultType="com.lee.test.pojo.User">select * from t_user where id in<foreach collection="array" item="id" index="index" open="(" close=")" separator=",">#{id}</foreach></select>

如果傳入的int[] ids為1,2,3
這句sql語句相當于 select * from t_user where id in (1,2,3)

3、如果傳入的是一個map
在開發過程中會遇到既要傳入一個String,又要傳入一個list,這時我們就可以把把這個String和list封裝成一個map

//定義一個list
List ids = new ArrayList();
ids.add(1);
ids.add(2);
ids.add(3);
//將list和string放到map
HashMap map = new HashMap();
map.put("name", name);
map.put("ids", ids);//mapper.java
List<User> getUser(HashMap map);//mapper.xml
<select id="getUser" parameterType="java.util.HashMap" resultType="com.lee.test.pojo.User">select * from t_user where name = #{name} and id in<foreach collection="ids" item="id" index="index" open="(" close=")" separator=",">#{id}</foreach>
</select>

這里collection的值是map中list的key值,如果直接寫list或者array就會報錯

轉載于:https://www.cnblogs.com/leexboo/p/10480955.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/394894.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/394894.shtml
英文地址,請注明出處:http://en.pswp.cn/news/394894.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C 怎么讀取Cpp文件_opencv從yaml文件中讀取矩陣(c++)

PS:由于我是新手&#xff0c;因此記錄的比較羅里吧嗦&#xff0c;本文也屬于一個沒有任何技術的編程積累。在SLAM系統中&#xff0c;經常需要從配置文件中讀取參數文件&#xff0c;讀取整型&#xff0c;浮點型都是比較常見的操作&#xff0c;在讀取矩陣卡了一下&#xff0c;記錄…

oracle中的判斷大小,sql語句判斷大小

如何用sql語句查看某個數據庫中的表的大小--讀取庫中的所有表名select name from sysobjects where xtypeu--讀取指定表的所有列名select name from syscolumns where id(select max(id) from sysobjects where xtypeu and name表名)獲取數據庫表名和字段sqlserver中各個系統表…

超越Android:探索Kotlin的應用領域

by Adam Arold亞當阿羅德(Adam Arold) 超越Android&#xff1a;探索Kotlin的應用領域 (Going beyond Android: exploring Kotlin’s areas of application) If you have written something in Kotlin, chances are that you wrote it for Android. Kotlin, however, has other…

3.SFB標準版前端安裝

SFB服務器準備部分&#xff1a;1.修改服務器名稱&#xff0c;sfb加入域&#xff0c;用域管理員賬戶登錄2.配置服務器IP地址&#xff0c;DNS3.安裝Windows組件Add-WindowsFeature NET-Framework-Core, RSAT-ADDS, Windows-Identity-Foundation, Web-Server, Web-Static-Content,…

向spark standalone集群提交任務

文檔鏈接 #切換到spark安裝目錄,執行下面一條命令,192.168.0.10是master的ip, examples/src/main/python/pi.py 是python 文件的路徑 ./bin/spark-submit --master spark://192.168.0.106:7077 examples/src/main/python/pi.py任務已經執行完畢,耗時10秒 轉載于:https://www.c…

SQLite學習手冊

一、聚合函數&#xff1a; SQLite中支持的聚合函數在很多其他的關系型數據庫中也同樣支持&#xff0c;因此我們這里將只是給出每個聚集函數的簡要說明&#xff0c;而不在給出更多的示例了。這里還需要進一步說明的是&#xff0c;對于所有聚合函數而言&#xff0c;distinct關鍵字…

oracle全局索引 效率,關于插入,全局索引和局部索引的情況,那種效率高

分區表上的索引表可以按range&#xff0c;hash&#xff0c;list分區&#xff0c;表分區后&#xff0c;其上的索引和普通表上的索引有所不同&#xff0c;oracle對于分區表上的索引分為2類&#xff0c;即局部索引和全局索引&#xff0c;下面分別對這2種索引的特點和局限性做個總結…

python excelwriter保存路徑_Python和Excel 終于可以互通了!!

點擊“開發者技術前線”&#xff0c;選擇“星標&#x1f51d;”在看|星標|留言, 真愛作者&#xff1a;小天真_5eed 鏈接&#xff1a;https://www.jianshu.com/p/6ecf414f3372今天為大家分享一篇使用python將大量數據導出到Excel中的技巧心得&#xff0c;可以讓Python和Excel…

nodejs 調用微服務器_無服務器NodeJS:構建下一個微服務的快速,廉價方法

nodejs 調用微服務器by Filipe Tavares由Filipe Tavares 無服務器NodeJS&#xff1a;構建下一個微服務的快速&#xff0c;廉價方法 (Serverless NodeJS: the fast, inexpensive way to build your next microservice) I love Node.js. I’ve re-discovered Javascript through…

(藍橋杯)2018JAVA B組 日志分析

日志統計 小明維護著一個程序員論壇。現在他收集了一份"點贊"日志&#xff0c;日志共有N行。其中每一行的格式是&#xff1a; ts id 表示在ts時刻編號id的帖子收到一個"贊"。 現在小明想統計有哪些帖子曾經是"熱帖"。如果一個帖子曾在任意一個長…

MySQL 導出數據

2019獨角獸企業重金招聘Python工程師標準>>> 1、導出整個數據庫 mysqldump -u 用戶名 -p 數據庫名 > 存放位置比如&#xff1a; mysqldump -u root -p project > c:/a.sql 2.導出一個表的結構&#xff0c;并且帶表中的數據 mysqldump -u 用戶名 -p 數據庫名 …

哎 心好累

雨天后的周六還要上班&#xff0c;避開了所有上班的交通方式&#xff0c;沒有比這更需要車的時候&#xff0c;哎&#xff0c;感覺心好累 好好努力買車吧&#xff0c;覺得再這樣只能是徒勞了。 困得和傻逼一樣 單片機又要換型號&#xff0c;后面一堆事兒&#xff0c;哎 再見-dsp…

Abbey加入了FreeCodeCamp團隊,擔任編輯

by Quincy Larson昆西拉爾森(Quincy Larson) Abbey加入了FreeCodeCamp團隊&#xff0c;擔任編輯 (Abbey is joining the freeCodeCamp team as an editor) Every article you’ve read here on the freeCodeCamp community Medium publication has been edited with care by a…

單片機STM8S測量電壓電路_單片機電路設計中的10個難點

單片機是嵌入式系統的核心元件&#xff0c;使用單片機的電路要復雜得多&#xff0c;但在更改和添加新功能時&#xff0c;帶有單片機的電路更加容易實現&#xff0c;這也正是電器設備使用單片機的原因。那么在單片機電路的設計中需要注意的難點有哪些&#xff1f;嵌入式ARM開發 …

oracle ebs 數據源,Oracle EBS環境下查找數據源(Form篇)

關于在Oracle EBS環境下如何查找數據源的文章幾年前就已經開始整理&#xff0c;但是其中關于OAF方面的一直沒有整理&#xff0c;導致這份文檔一直殘缺不全&#xff0c;有很多次同事都向我索要相關文檔都未能如愿以償&#xff0c;新的一屆培訓工作再次啟動&#xff0c;為了自己也…

net-speeder

有的同學反映自己的***速度慢&#xff0c;丟包率高。這其實和你的網絡服務提供商有關。據我所知一部分上海電信的同學就有這種問題。那么碰到了坑爹的網絡服務商&#xff0c;我們應該怎么辦呢&#xff1f; duangduang~~~~~~有請今天的主角&#xff1a;Net-Speeder登場&#xff…

linux 實用指令

通過init 來制定/切換不同的運行指令 查看linux 系統下&#xff0c;電腦的運行級別 vim /etc/inittab 如何找回丟失的root密碼&#xff1f; 進入到單用戶模式&#xff0c;然后修改root密碼 進入到單用戶模式&#xff0c;root不需要密碼也可以登錄 如果開機就是init 0 辦法&…

Atitit.異步的實現模式attilax大總結

Atitit.異步的實現模式attilax大總結 1.1. 函數回調(包括的future模式)1 1.2. 事件機制( 包括定時器 listeners 1 1.3. 中斷機制1 1.4. 訂閱機制 發布/訂閱 又稱"觀察者模式"&#xff08;observer pattern&#xff09;。1 1.5. Promises對象1 1.6. 輪詢1 2. 實現級別…

區塊鏈開發指南_區塊鏈開發權威指南

區塊鏈開發指南by Haseeb Qureshi由Haseeb Qureshi 區塊鏈開發權威指南 (The authoritative guide to blockchain development) Cryptocurrencies, ICOs, magic internet money — it’s all so damn exciting, and you, the eager developer, want to get in on the madness.…

【BZOJ1831】[AHOI2008]逆序對(動態規劃)

【BZOJ1831】[AHOI2008]逆序對&#xff08;動態規劃&#xff09; 題面 BZOJ洛谷 題解 顯然填入的數拎出來是不降的。 那么就可以直接大力\(dp\)。 設\(f[i][j]\)表示當前填到了\(i\)&#xff0c;上一個填的數是\(j\)的最小逆序對數。 隨便拿什么維護一下轉移就好了。 #include&…