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

您的位置:首頁技術(shù)文章
文章詳情頁

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

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

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

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

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

public interface SQLMapper { /** * 根據(jù)用戶名模糊查詢用戶信息 */ 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操作數(shù)據(jù)庫。Mybatis獲取參數(shù)值有兩種方式:#{}和${}

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

#{}和${}本質(zhì)區(qū)別

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

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

<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>

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

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

執(zhí)行結(jié)果

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

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

結(jié)果是;

2、動態(tài)表名

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

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

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

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

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

直接使用${}的方式

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

結(jié)果成功了,所以在動態(tài)表名的情況下,我們只能使用${}

3、獲取自增的組件

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

<!-- void insetUser(User user);--><!-- 方法的返回值是固定的useGeneratedKeys 設(shè)置當(dāng)前標(biāo)簽中的sql使用了自增的主鍵 (id)keyProperty 將自增的主鍵的值 賦值給 傳輸?shù)接成湮募械膮?shù)的某個屬性(user.id)--> <insert useGeneratedKeys='true' keyProperty='id'>insert into t_user values(null, #{username}, #{password},#{age},#{gender},#{email}) </insert>4、批量刪除

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

Integer deleteByIds(String Ids);

使用#{}

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

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

使用${}

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

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

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

標(biāo)簽: MsSQL 數(shù)據(jù)庫
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
中文视频一区| 国产精品亚洲欧美一级在线| 综合色就爱涩涩涩综合婷婷| 欧美精品自拍| 激情欧美日韩一区| 欧洲av不卡| 国产精品国产三级国产在线观看| 国产日韩高清一区二区三区在线| 日韩一区二区三区高清在线观看| 亚洲开心激情| 日韩av网站在线免费观看| 欧美中文一区| 日韩高清中文字幕一区二区| 欧洲在线一区| 亚洲精品小说| 亚洲欧美专区| 国产精品一区二区三区四区在线观看| 男人的天堂久久精品| 一区二区高清| 国产丝袜一区| 日韩欧美精品一区| 夜夜嗨av一区二区三区网站四季av| 日韩中文字幕麻豆| 青青草伊人久久| 四虎4545www国产精品| 日韩欧美国产精品综合嫩v| 国产精品啊v在线| 麻豆国产精品一区二区三区| 国产精品欧美大片| 国产精品久久久久av蜜臀| 亚洲专区视频| 老牛影视一区二区三区| 免费视频最近日韩| 亚洲一区二区三区无吗| 亚洲精品系列| 欧美私人啪啪vps| 国产精品极品在线观看| 老司机精品视频网| 日韩国产在线| 婷婷丁香综合| 久久亚洲欧美| 日韩欧乱色一区二区三区在线| 日本亚洲欧美天堂免费| 日本免费一区二区视频| 国产探花在线精品一区二区| 精品五月天堂| а√天堂8资源在线| 偷拍精品精品一区二区三区| 亚洲五月婷婷| 国产精品88久久久久久| 五月婷婷六月综合| 一区二区精品| 日韩三级精品| 久久香蕉精品香蕉| 人人精品亚洲| 蜜桃久久久久久| 欧美亚洲三区| 国产精选在线| 国产高清久久| 蜜臀av一区二区在线免费观看| 亚洲ww精品| 国产精品xxx| 中文在线中文资源| 欧美99久久| 日本在线成人| 精品久久美女| 91精品成人| 婷婷五月色综合香五月| 麻豆国产欧美一区二区三区 | 欧美福利专区| 影音先锋久久精品| 美女视频网站久久| 欧美羞羞视频| 蜜桃视频在线观看一区二区| 久久wwww| 性色一区二区| 国产精品亚洲综合在线观看| 亚洲成人免费| 国产精品777777在线播放| 视频小说一区二区| 日韩av字幕| 蜜桃精品在线| 欧美久久亚洲| 国产91一区| 久久国际精品| av一区二区高清| 国产精品va视频| 免费av一区| 国产精品亚洲综合久久| 香蕉久久99| 国产精品欧美大片| 国产日韩专区| 美女性感视频久久| 日韩精品一卡二卡三卡四卡无卡| 狠狠久久伊人中文字幕| 综合视频一区| 美女网站视频一区| 老牛国产精品一区的观看方式| 精品丝袜在线| 欧美精品三级在线| 免费观看久久av| 国产精品白浆| 尹人成人综合网| 国产激情一区| 蜜桃视频免费观看一区| 色综合www| 97成人超碰| 宅男噜噜噜66国产日韩在线观看| 久久精品99国产国产精| 香蕉国产精品| 黄毛片在线观看| 国产精品久久久一区二区| 国产亚洲综合精品| 日韩电影二区| 欧美国产极品| 亚洲另类视频| 亚洲精品小说| 国产精品一区二区三区四区在线观看 | 欧美肉体xxxx裸体137大胆| 久久成人福利| 亚洲精品成人一区| 99riav国产精品| 国产亚洲一区二区手机在线观看 | 日韩精品免费视频人成| 蜜桃av.网站在线观看| 欧美精品中文字幕亚洲专区| 99在线|亚洲一区二区| 成人日韩在线观看| 精品免费在线| 国产精品成人**免费视频| 日韩中文字幕视频网| 亚洲精品电影| 日韩精品免费一区二区三区| 国产精品日本一区二区三区在线| 国产精品毛片在线看| 国产日韩亚洲| 国产精品porn| 国产精品网址| 国产精品久久久一区二区| 久热精品在线| 国产视频一区三区| av亚洲免费| 蜜桃国内精品久久久久软件9| 欧美成人精品午夜一区二区| 亚洲欧洲日韩精品在线| 国产精品av一区二区| 在线日韩电影| 欧美 日韩 国产一区二区在线视频| 久久久精品日韩| 蜜桃av.网站在线观看| 老牛影视精品| 久久人人97超碰国产公开结果| 免费日韩av片| 亚洲久久一区| 日韩欧美2区| 免费成人性网站| 亚洲v天堂v手机在线| 亚州国产精品| 国产欧美日韩一区二区三区在线| 欧美专区一区| 国产精品久av福利在线观看| 国产精品22p| 精品国产欧美日韩| 国产精品毛片久久| 亚洲国产福利| 午夜精品久久久久久久久久蜜桃| 性感美女一区二区在线观看| 欧美va天堂| 91精品日本| 美女精品久久| 成人精品动漫一区二区三区| 亚洲欧洲高清| 亚洲激精日韩激精欧美精品| 视频精品一区二区| 奇米777国产一区国产二区| 国产精品久久久久久久久免费高清| 国产福利亚洲| 日韩大片在线观看| 自拍日韩欧美| 亚洲一区二区免费在线观看| 97精品久久| 国产成人精品亚洲线观看| 欧美aa在线观看| 丝瓜av网站精品一区二区| 日韩精品导航| 国产精品一区2区3区| 日韩欧美精品一区| 亚洲综合精品| 日韩高清成人在线| 免费精品一区| 亚洲色诱最新| 国产欧美综合一区二区三区| 色欧美自拍视频| 狠狠爱成人网| 日韩精品一区二区三区免费视频| 麻豆精品视频在线观看视频| 五月婷婷亚洲| 国产亚洲字幕| 久久亚洲黄色| 蜜桃视频一区二区|