日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Mybatis動態SQL的實現示例

瀏覽:113日期:2023-10-22 11:10:40

場景

在實際應用開發過程中,我們往往需要寫復雜的 SQL 語句,需要拼接,而拼接SQL語句又稍微不注意,由于引號,空格等缺失可能都會導致錯誤。Mybatis提供了動態SQL,也就是可以根據用戶提供的參數,動態決定查詢語句依賴的查詢條件或SQL語句的內容。

動態SQL標簽

if 和 where 標簽

<!--動態Sql : where / if--> <select resultType='com.lks.domain.User'> select <include refid='tableAllkey'/> from users <where> <if test='id != null and id != 0'>AND id = #{id} </if> <if test='name != null and name != ’’'>AND name = #{name} </if> <if test='county != null and county != ’’'>AND county = #{county} </if> </where> </select>

一般開發列表業務的查詢條件時,如果有多個查詢條件,通常會使用 標簽來進行控制。 標簽可以自動的將第一個條件前面的邏輯運算符 (or ,and) 去掉,正如代碼中寫的,id 查詢條件前面是有“and”關鍵字的,但是在打印出來的 SQL 中卻沒有,這就是 的作用。打印SQL語句的使用可以在mybatis-config文件中添加setting標簽:

<settings> <!-- 打印查詢語句 --> <setting name='logImpl' value='STDOUT_LOGGING' /> </settings>

choose、when、otherwise 標簽

這三個標簽需要組合在一起使用,類似于 Java 中的 switch、case、default。只有一個條件生效,也就是只執行滿足的條件 when,沒有滿足的條件就執行 otherwise,表示默認條件。

<!--動態Sql: choose、when、otherwise 標簽--> <select resultType='com.lks.domain.User'> select * from users <where> <choose><when test='name != null and name != ’’'> AND name = #{name}</when><when test='county != null and county != ’’'> AND county = #{county}</when><otherwise> AND id = #{id}</otherwise> </choose> </where> </select>

在測試類中,即使同時添加name和county的值,最終的sql也只會添加第一個屬性值。

set 標簽

使用set標簽可以將動態的配置 SET 關鍵字,并剔除追加到條件末尾的任何不相關的逗號。使用 if+set 標簽修改后,在進行表單更新的操作中,哪個字段中有值才去更新,如果某項為 null 則不進行更新,而是保持數據庫原值。

<!--動態Sql: set 標簽--> <update parameterType='com.lks.domain.User'> update users <set> <if test='name != null and name != ’’'>name = #{name}, </if> <if test='county != null and county != ’’'>county = #{county}, </if> </set> where id = #{id} </update>

trim 標簽

trim 是一個格式化標簽,可以完成< set > 或者是 < where > 標記的功能。主要有4個參數:① prefix:前綴

② prefixOverrides:去掉第一個and或者是or

③ suffix:后綴

④ suffixOverrides:去掉最后一個逗號,也可以是其他的標記

<!--動態Sql: trim 標簽--> <select resultType='com.lks.domain.User'> select * from users <trim prefix='where' suffix='order by age' prefixOverrides='and | or' suffixOverrides=','> <if test='name != null and name != ’’'>AND name = #{name} </if> <if test='county != null and county != ’’'>AND county = #{county} </if> </trim> </select>

foreach 標簽

foreach標簽主要有以下參數:item :循環體中的具體對象。支持屬性的點路徑訪問,如item.age,item.info.details,在list和數組中是其中的對象,在map中是value。index :在list和數組中,index是元素的序號,在map中,index是元素的key,該參數可選。open :表示該語句以什么開始close :表示該語句以什么結束separator :表示元素之間的分隔符,例如在in()的時候,separator=','會自動在元素中間用“,“隔開,避免手動輸入逗號導致sql錯誤,如in(1,2,)這樣。該參數可選。

list批量插入

<!--動態Sql: foreach標簽, 批量插入--> <insert useGeneratedKeys='true' keyProperty='id'> insert into users (name, age, county, date) values <foreach collection='list' item='user' separator=',' >(#{user.name}, #{user.age}, #{user.county}, #{user.date}) </foreach> </insert>

Mybatis動態SQL的實現示例

從結果可以看出,我們一下插入了兩條數據,每條數據之間使用“,”進行分割,separator=',' 的作用就是如此。其中< foreach >標簽內部的屬性務必加上item.

list集合參數

<!--動態Sql: foreach標簽, list參數查詢--> <select resultType='com.lks.domain.User'> SELECT * from users WHERE id in <foreach collection='list' item='id' open='(' close=')' separator=',' > #{id} </foreach> </select>

Mybatis動態SQL的實現示例

可以看出我們的 SQL 語句新增了:( ? , ? ) ,前后的括號由 open='(' close=')' 進行控制,用“?”占位符占位,并通過separator以:“,”隔開,內部兩個循環遍歷出的元素。array 集合與 list 的做法也是類似的:

<!--動態Sql: foreach標簽, array參數查詢--> <select resultType='com.lks.domain.User'> select * from users WHERE id in <foreach collection='array' item='id' open='(' close=')' separator=','> #{id} </foreach> </select>

map參數

< map> 標簽需要結合MyBatis的參數注解 @Param()來使用,需要告訴Mybatis配置文件中的collection='map'里的map是一個參數:

<!--動態Sql: foreach標簽, map參數查詢--> <select resultType='com.lks.bean.User'> select * from users WHERE <foreach collection='map' index='key' item='value' separator='='> ${key} = #{value} </foreach> </select>

需要主要${}和#{}的使用。

到此這篇關于Mybatis動態SQL的實現示例的文章就介紹到這了,更多相關Mybatis動態SQL內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Mybatis 數據庫
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
五月天av在线| 欧美成人基地 | 国产精品久久久久久av公交车| 国产成人精品三级高清久久91 | 日韩在线a电影| 日韩国产欧美三级| 麻豆国产欧美一区二区三区| 99久久夜色精品国产亚洲狼| 亚洲日本在线观看视频| 色在线视频观看| 最新亚洲一区| 精品99在线| 亚洲一区观看| 一区二区亚洲视频| 韩日一区二区三区| 97精品国产| 欧美日韩亚洲三区| 1024精品久久久久久久久| 欧美三区四区| 久久不卡国产精品一区二区| 一区二区日韩免费看| 天堂av在线| 国产aⅴ精品一区二区四区| 欧美偷窥清纯综合图区| 青青草视频一区| 国产精品永久| 精品深夜福利视频| 福利欧美精品在线| 日韩精品免费观看视频| 日韩av中文字幕一区| 国产精品欧美日韩一区| 国产精品日韩精品在线播放| 欧美a级一区| 免费日韩av片| 天堂资源在线亚洲| 久久一级电影| 日韩av免费大片| 欧美日韩99| 日本欧美一区二区在线观看| 国产图片一区| 亚洲免费专区| 日本亚洲最大的色成网站www | 麻豆91精品91久久久的内涵| 欧美激情日韩| 国产99久久| 红桃视频欧美| 日韩精品亚洲aⅴ在线影院| 视频在线观看91| 蜜桃av一区二区在线观看| 视频一区日韩| a国产在线视频| 中文字幕日本一区| 国产精品调教| а√天堂8资源在线| 国产一区日韩欧美| 91综合网人人| 天堂网在线观看国产精品| 性一交一乱一区二区洋洋av| 亚洲开心激情| 欧美一级一区| 国产精品国产一区| 国产精品美女久久久| 91免费精品国偷自产在线在线| 国产探花一区| 日本欧美韩国一区三区| www.com.cn成人| 亚洲精品一级| 国产精品老牛| 国产精品久久久久久久久久10秀| 亚洲在线国产日韩欧美| 婷婷亚洲成人| 桃色一区二区| 蜜桃视频第一区免费观看| 天堂а√在线最新版中文在线| 欧美黄页在线免费观看| 久久精品导航| 久久亚洲黄色| 91麻豆精品激情在线观看最新| 国产一区二区三区不卡av| 亚洲小说春色综合另类电影| 精品日韩视频| 日韩天堂在线| 久久国产欧美| 国产精品美女在线观看直播| 日韩在线卡一卡二| 精品欧美激情在线观看| 私拍精品福利视频在线一区| 黑人精品一区| 久久久9色精品国产一区二区三区| 久久久久久自在自线| 视频在线不卡免费观看| 日韩综合在线| 亚州av乱码久久精品蜜桃| 丝袜美腿一区| 婷婷国产精品| 亚洲欧美一区在线| 国产精品日韩久久久| 久久亚洲美女| 天堂俺去俺来也www久久婷婷| 偷拍亚洲精品| 国产精品白丝久久av网站| 国产一精品一av一免费爽爽| 国产精品欧美一区二区三区不卡| 精品视频一二| 精品欧美激情在线观看| 日韩精品欧美大片| 国产福利资源一区| 久久国产毛片| 午夜宅男久久久| 日韩视频1区| 成人在线视频区| 天堂网在线观看国产精品| 日韩av影院| 在线一区av| 日韩影院免费视频| 国产精品伦理久久久久久| 免费在线观看日韩欧美| 国产一区调教| 日本不卡高清视频| 精品捆绑调教一区二区三区| 亚洲2区在线| 亚洲手机在线| 国产精品激情| 日韩成人午夜精品| 国产成人精品福利| 日本综合精品一区| 在线成人动漫av| 另类欧美日韩国产在线| 免费久久99精品国产| 天堂网av成人| 国产成人调教视频在线观看| 日韩欧美精品一区二区综合视频| 亚洲午夜电影| 国产成人精品免费视| 精品一区亚洲| 亚洲精品在线影院| 精品少妇av| 精品视频一区二区三区在线观看| 中文字幕一区二区三区日韩精品| www.51av欧美视频| 国产精品入口久久| 91成人在线网站| 亚洲精品一二三**| 蜜桃久久精品一区二区| 九色精品91| 亚洲va中文在线播放免费| 成人污污视频| 亚洲3区在线| 免费欧美在线视频| 免费日韩视频| 丰满少妇一区| 久久精品免费看| 美女性感视频久久| 日韩欧美久久| 视频一区二区三区中文字幕| 91久久国产| 91久久中文| 亚洲在线国产日韩欧美| 久久午夜精品| 视频一区日韩精品| 欧美伊人影院| 国产精品天天看天天狠| 国产精品亚洲产品| 欧美一区成人| 蜜芽一区二区三区| 亚洲日本在线观看视频| 日本一区二区中文字幕| 亚洲欧美日本视频在线观看| 欧美女激情福利| 久久91导航| 伊人久久婷婷| 麻豆传媒一区二区三区| 视频一区国产视频| 欧美日韩国产观看视频| 日韩av网站在线免费观看| 欧美aa国产视频| 中文在线а√在线8| 欧美日韩 国产精品| 欧美成人亚洲| 999国产精品| 韩国久久久久久| 久久一区精品| 国产免费av国片精品草莓男男| 丝袜亚洲精品中文字幕一区| 亚洲午夜天堂| 福利一区视频| 精品久久99| 麻豆91在线播放| 国产亚洲高清一区| 亚洲精品四区| 亚洲不卡视频| 亚洲区国产区| 蜜臀a∨国产成人精品| 午夜日韩av| 黄色在线一区| 国产精品视区| 亚洲欧美网站| 日韩在线黄色| 欧美日韩视频免费看| 午夜欧美精品久久久久久久|