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

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

Mybatis中處理特殊SQL處理邏輯解析

瀏覽:37日期:2023-09-28 21:00:59
目錄0、前言1、模糊查詢2、動態表名3、獲取自增的組件4、批量刪除0、前言

在MyBatis中可能會有一些特殊的SQL需要去執行,一般就是模糊查詢、批量刪除、動態設置表名、添加功能獲取自增的主鍵這幾種,現在分別來進行說明。為了方便演示 ,定義了訪問的接口

public interface SQLMapper { /** * 根據用戶名模糊查詢用戶信息 */ List<User> getUserByLike(@Param('username') String username); /** * 批量刪除 */ int deleteMore(String ids); /** * 查詢指定表中的數據 */ List<User> getUserByTableName(String tableName); /** * 添加用戶 */ void insetUser(User user);}1、模糊查詢

模糊查詢非常的有用,對于一些訪問量不是很大的搜索都是直接使用模糊查詢的方式來做的。SQLMapper類:

public interface SQLMapper { /** * 根據用戶名模糊查詢用戶信息 */ List<User> getUserByLike(@Param('username') String username);}

對于SQLXml的編寫;

<!-- List<User> getUserByLike(@Param('username') String username);--><!-- 使用#{},因為包括在單引號里,會被認為是字符串的一部分:select * from t_user where username like '%#{username}%'--><!-- 三種方式--> <select resultType='User'> <!-- 第一種 select * from t_user where username like '%${username}%' 第二種 select * from t_user where username like concat('%', #{username}, '%')--> <!--第三種 推薦使用-->select * from t_user where username like '%'#{username}'%' </select>

需要注意的是Mybatis對JDBC進行了進一步封裝,使得我們可以更加便捷的使用Java操作數據庫。Mybatis獲取參數值有兩種方式:#{}和${}

在大部分情況下,#{}和${}都能相互替代,使用兩者之一即可,更加推薦使用#{},因為可以防止SQL注入問題,但是由于#{}和${}本質上的不同,部分SQL語句使用#{}和${}需要格外注意

#{}和${}本質區別

#{}本質上是占位符賦值,為字符串類型或日期類型的字段進行賦值時,可以自動添加單引號${}本質上是字符串拼接,為字符串類型或日期類型的字段進行賦值時,需要手動加單引號

這個場景下,使用#{}和${}都能達到目的,但是用法稍有不同如果是直接使用

<select resultType='pojo.User'>select * from user where user_name like '%#{username}%'</select>

這種方式,?被作為是字符串來處理了。

將#{}換成${}

<select resultType='pojo.User'> select * from user where user_name like '%${username}%'</select>

成功執行如果非要使用#{},也不是沒有解決辦法使用""拼接

<select resultType='pojo.User'> select * from user where user_name like '%'#{username}'%'</select>

執行結果

或者是使用concat()函數來拼接

<select resultType='pojo.User'> select * from user where user_name like concat('%',#{likeString},'%')</select>

結果是;

2、動態表名

在某些場景下,我們需要來回操作各種表,但SQL語句功能一致,這時我們可以使用動態表名,即傳參為表名類型,這時就要從#{}和${}中進行選擇了Mapper接口

List<User> selectAllFromTable(@Param('tableName') String tableName);

如果是直接使用#{}的方式

<select resultType='pojo.User'> select * from #{tableName}</select>

結果報錯,原因在于#{}為占位符賦值,傳參為String的話就會自動補上單引號'',而表名不允許添加單引號,所以導致出錯。

直接使用${}的方式

<select resultType='pojo.User'> select * from ${tableName}</select>

結果成功了,所以在動態表名的情況下,我們只能使用${}

3、獲取自增的組件

需要在xml中配置 useGeneratedKeys , keyProperty 兩個屬性的值.

<!-- void insetUser(User user);--><!-- 方法的返回值是固定的useGeneratedKeys 設置當前標簽中的sql使用了自增的主鍵 (id)keyProperty 將自增的主鍵的值 賦值給 傳輸到映射文件中的參數的某個屬性(user.id)--> <insert useGeneratedKeys='true' keyProperty='id'>insert into t_user values(null, #{username}, #{password},#{age},#{gender},#{email}) </insert>4、批量刪除

有些場景,需要我們根據id數組批量刪除記錄,這個時候也有一些坑由于id數組的長度是不確定的,所以我們不能確定參數的個數,但是我們可以使用in關鍵字,這個時候我們將id數組轉為字符串進行傳參就好了。[1,2,3] => 1,2,3Mapper接口

Integer deleteByIds(String Ids);

使用#{}

<delete id='deleteByIds'> delete from user where id in (#{ids})</delete>

結果報錯,原因在于in后面的小括號里面的'1,2,3'為字符串類型且為一個整體,與整數類型不符,因此不能使用#{}

使用${}

<delete id='deleteByIds'> delete from user where id in (${ids})</delete>

結果成功了,看來有些場景不得不使用${}

到此這篇關于Mybatis中處理特殊SQL處理邏輯的文章就介紹到這了,更多相關Mybatis特殊SQL處理內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: MsSQL 數據庫
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲18在线| 日本午夜免费一区二区| 国产精品尤物| 日韩欧美字幕| 视频一区二区三区中文字幕| 久久精品国产99国产| 欧美va天堂| 日韩不卡一二三区| 久久精品高清| 国产成人精选| 麻豆国产91在线播放| 日韩有码av| 欧洲在线一区| 国产自产自拍视频在线观看| 日本不卡视频一二三区| 一区在线观看| 97精品国产| 日韩久久一区| 99久久亚洲精品| 日本大胆欧美人术艺术动态| 国产不卡精品| 久久不卡日韩美女| 欧美欧美黄在线二区| 最近国产精品视频| 日韩激情啪啪| 国产精品sss在线观看av| 亚洲欧洲美洲国产香蕉| 亚洲激情二区| 麻豆9191精品国产| 国产精品jk白丝蜜臀av小说| 久久精品国产网站| 国产在线观看www| 亚洲人成在线网站| 国产精品高颜值在线观看| 日韩黄色在线观看| 国产精品www.| 国产高潮在线| 综合亚洲色图| 午夜电影亚洲| 国产欧美日韩| 精品欧美日韩精品| 91欧美极品| 亚洲精品影视| 亚洲精品1区| 亚洲性色视频| 中文字幕在线高清| 97精品国产一区二区三区| 精品在线网站观看| 日本精品在线播放| 石原莉奈在线亚洲二区| 今天的高清视频免费播放成人| 久久激情综合网| 99国产精品久久久久久久| 久久亚洲影院| 日本麻豆一区二区三区视频| 欧美在线精品一区| 奇米狠狠一区二区三区| 久久这里只有精品一区二区| 国产精品啊v在线| 高清在线一区| 不卡福利视频| 国产欧美午夜| 精品久久福利| 中文字幕色婷婷在线视频| 日韩在线a电影| 日韩黄色免费网站| 老鸭窝一区二区久久精品| 91综合视频| 狠狠色综合网| 午夜日韩av| 清纯唯美亚洲综合一区| 高清一区二区| 久久夜色精品| 国产精品欧美大片| 国产精品成人a在线观看| 欧美精品一区二区久久| 国产乱论精品| 午夜国产一区二区| 欧美日韩 国产精品| 久久蜜桃资源一区二区老牛| 不卡av一区二区| 欧美精品国产白浆久久久久| 三级欧美韩日大片在线看| 日韩中文字幕区一区有砖一区 | 亚洲不卡视频| 喷白浆一区二区| 99精品美女| 日本午夜免费一区二区| 久久亚洲精品中文字幕| 丝袜美腿亚洲一区| 另类专区亚洲| 国产日韩三级| 日韩精品欧美| 国产亚洲欧洲| 国产精品麻豆成人av电影艾秋 | 最新国产拍偷乱拍精品| 国产精品极品国产中出| 夜夜嗨一区二区三区| 亚洲v天堂v手机在线| 日韩1区2区日韩1区2区| 久久中文字幕二区| 中文字幕av一区二区三区人| 欧美日韩一区自拍| 亚洲在线成人| 97精品资源在线观看| 特黄特色欧美大片| 精品1区2区3区4区| av在线资源| 一区二区三区四区日本视频| 青青国产精品| 欧美日韩午夜电影网| 免费在线观看精品| 99国产精品99久久久久久粉嫩| 日韩中文字幕一区二区三区| 136国产福利精品导航网址| 日韩中文字幕91| 国产精品多人| 免费欧美日韩| 88久久精品| 老色鬼精品视频在线观看播放| 国产精品极品国产中出| 国产精品极品| 日韩极品在线观看| 国产精品日韩精品中文字幕| 日韩一区二区三免费高清在线观看 | 国产精品亚洲成在人线| 日韩成人亚洲| 国产精品伦一区二区| 久久久久久久久丰满| 久久国产日韩| a国产在线视频| 日韩一区精品| 久久99久久人婷婷精品综合| 欧美一级二级三级视频| 狠狠干成人综合网| 日韩专区精品| 日韩黄色av| 午夜精品成人av| 亚洲精品进入| 精品视频高潮| 女同性一区二区三区人了人一| 国产aⅴ精品一区二区四区| 精品国产一区二区三区噜噜噜| 蜜桃av一区二区三区电影| 亚洲一区欧美| 婷婷亚洲五月| 久久大逼视频| 久久精品九色| 成人在线免费观看网站| 性欧美长视频| 麻豆精品久久久| 日韩精品免费观看视频| 蜜桃视频在线观看一区| 日韩一区自拍| 日韩动漫一区| 97久久亚洲| 国产真实久久| 高清av一区| 久久久久久免费视频| 日韩国产欧美视频| 99亚洲视频| 日本h片久久| 亚洲精品极品| 99久久久久| 国产高清一区二区| 国产成人精选| 老色鬼精品视频在线观看播放| 精品国产欧美日韩| 久久精品中文| 久久国产精品毛片| 亚洲天堂免费| av日韩中文| 国产视频一区二| 亚洲一区二区网站| 91精品啪在线观看国产18| 久久精品国内一区二区三区水蜜桃| 日本黄色精品| 天堂av在线一区| 里番精品3d一二三区| 丝袜美腿亚洲色图| 激情综合网址| 欧美日韩免费观看视频| 欧美一级鲁丝片| 日韩伦理一区| 亚洲另类黄色| 日韩欧美一区二区三区在线视频| 成人污污视频| 久久久久免费av| 国内自拍视频一区二区三区| 精品日产乱码久久久久久仙踪林| 少妇精品久久久一区二区| 久久中文字幕导航| 国产激情欧美| 精品国产一区二| 丝袜美腿一区二区三区| 亚洲一区av| 国产精品日本一区二区不卡视频 | 麻豆成人91精品二区三区| 欧美午夜三级| 日韩精品久久理论片|