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

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

Mybatis 將table表名作為參數(shù)傳入操作

瀏覽:101日期:2023-10-20 18:13:29

使用 $ 符

如在mapper.xml里面的使用:

Mybatis 將table表名作為參數(shù)傳入操作

在mapper層就把這個表名當做普通的參數(shù)傳入即可:

Mybatis 將table表名作為參數(shù)傳入操作

同理,其實如果真的使用了$ ,在不考慮安全的范疇里面,也可以把一些手動拼接的sql語句作為參數(shù)傳入。

補充知識:MyBatis動態(tài)傳入表名,字段名參數(shù)的解決辦法--用于分表--表名是動態(tài)的

一直在使用Mybatis這個ORM框架,都是使用mybatis里的一些常用功能。今天在項目開發(fā)中有個業(yè)務是需要限制各個用戶對某些表里的字段查詢以及某些字段是否顯示,如某張表的某些字段不讓用戶查詢到。這種情況下,就需要構建sql來動態(tài)傳入表名、字段名了。現(xiàn)在對解決方法進行下總結,希望對遇到同樣問題的伙伴有些幫助。

動態(tài)SQL是mybatis的強大特性之一,mybatis在對sql語句進行預編譯之前,會對sql進行動態(tài)解析,解析為一個BoundSql對象,也是在此處對動態(tài)sql進行處理。下面讓我們先來熟悉下mybatis里#{}與${}的用法:

在動態(tài)sql解析過程,#{}與${}的效果是不一樣的:

#{ } 解析為一個 JDBC 預編譯語句(prepared statement)的參數(shù)標記符。

如以下sql語句

select * from user where name = #{name};

會被解析為:

select * from user where name = ?;

可以看到#{}被解析為一個參數(shù)占位符?。

${ } 僅僅為一個純碎的 string 替換,在動態(tài) SQL 解析階段將會進行變量替換

如以下sql語句:

select * from user where name = ${name};

當我們傳遞參數(shù)“sprite”時,sql會解析為:

select * from user where name = 'sprite';

可以看到預編譯之前的sql語句已經(jīng)不包含變量name了。

綜上所得, ${ } 的變量的替換階段是在動態(tài) SQL 解析階段,而 #{ }的變量的替換是在 DBMS 中。 

#{}與${}的區(qū)別可以簡單總結如下:

#{}將傳入的參數(shù)當成一個字符串,會給傳入的參數(shù)加一個雙引號

${}將傳入的參數(shù)直接顯示生成在sql中,不會添加引號

#{}能夠很大程度上防止sql注入,${}無法防止sql注入

${}在預編譯之前已經(jīng)被變量替換了,這會存在sql注入的風險。如下sql

select * from ${tableName} where name = ${name}

如果傳入的參數(shù)tableName為user; delete user; --,那么sql動態(tài)解析之后,預編譯之前的sql將變?yōu)椋?/p>

select * from user; delete user; -- where name = ?;

--之后的語句將作為注釋不起作用,頓時我和我的小伙伴驚呆了!!!看到?jīng)],本來的查詢語句,竟然偷偷的包含了一個刪除表數(shù)據(jù)的sql,是刪除,刪除,刪除!!!重要的事情說三遍,可想而知,這個風險是有多大。

${}一般用于傳輸數(shù)據(jù)庫的表名、字段名等

能用#{}的地方盡量別用${}

進入正題,通過上面的分析,相信大家可能已經(jīng)對如何動態(tài)調(diào)用表名和字段名有些思路了。示例如下:

<select resultType='java.util.Map' parameterType='java.lang.String' statementType='STATEMENT'> select ${columns} from ${tableName} where COMPANY_REMARK = ${company} </select>

要實現(xiàn)動態(tài)調(diào)用表名和字段名,就不能使用預編譯了,需添加statementType='STATEMENT'' 。

statementType:STATEMENT(非預編譯),PREPARED(預編譯)或CALLABLE中的任意一個,這就告訴 MyBatis 分別使用Statement,PreparedStatement或者CallableStatement。默認:PREPARED。這里顯然不能使用預編譯,要改成非預編譯。

其次,sql里的變量取值是${xxx},不是#{xxx}。

因為${}是將傳入的參數(shù)直接顯示生成sql,如${xxx}傳入的參數(shù)為字符串數(shù)據(jù),需在參數(shù)傳入前加上引號,如:

String name = 'sprite';

name = '’' + name + '’';

mybatis動態(tài)調(diào)用表名和字段名,還可以應用于日志的收集上,如數(shù)據(jù)庫的日志表,每隔一個月動態(tài)建一個日志表,表名前綴相同(如log_201610,log_201611等),這樣實現(xiàn)日志的分月分表存儲,方便日志的分析。

以上這篇Mybatis 將table表名作為參數(shù)傳入操作就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。

相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
色偷偷偷在线视频播放| 蜜桃一区二区三区在线观看| 欧美日韩中文| 日本v片在线高清不卡在线观看| 人人爽香蕉精品| 国产一区日韩一区| 超碰超碰人人人人精品| 中国字幕a在线看韩国电影| 国语对白精品一区二区| 久久国产99| 蜜臀久久99精品久久久画质超高清| 国产高清一区| 国产美女一区| 蜜臀av亚洲一区中文字幕| 视频一区二区三区在线| 日韩中出av| 日韩和欧美一区二区| 日本午夜精品久久久| 欧美在线黄色| 麻豆极品一区二区三区| 黄色aa久久| 欧美99久久| 久色成人在线| 国产欧美综合一区二区三区| 欧美在线观看天堂一区二区三区| 欧美黄色一区二区| 中文在线免费视频| 91精品综合| 日韩一级不卡| 日韩毛片网站| 国内揄拍国内精品久久| 久久视频国产| 性色av一区二区怡红| 欧美天堂在线| 国产精品久久久久久久久妇女| 久久视频一区| 久久亚洲色图| 麻豆国产91在线播放| 日韩在线观看| 合欧美一区二区三区| 日韩视频一二区| 久久精品国产福利| 久久精品卡一| 亚洲一区二区日韩| 欧美成人aaa| 成人日韩精品| 在线一区二区三区视频| 美女久久精品| 最新国产拍偷乱拍精品| 国产精品日韩精品中文字幕| 日韩精品免费一区二区三区| 亚洲精品极品| 捆绑调教日本一区二区三区| 国产一级久久| 亚欧洲精品视频在线观看| 激情不卡一区二区三区视频在线| 最新国产拍偷乱拍精品| 国产精品极品在线观看| 久久影视一区| 国产欧美日韩精品一区二区三区| 久久久777| 国产欧美日韩一级| 蜜桃国内精品久久久久软件9| 日韩av不卡一区二区| 在线中文字幕播放| 四虎在线精品| 神马午夜久久| 国产精品免费99久久久| 99视频精品免费观看| 日本一区二区三区中文字幕| 香蕉成人av| 日韩精品免费一区二区夜夜嗨| аⅴ资源天堂资源库在线| 日韩手机在线| 影音先锋久久| 精品国产99| 日本不卡视频在线| 欧美日韩国产亚洲一区| 国产一区一一区高清不卡| 蜜臀久久久久久久| 久久精品免费一区二区三区| 国产精品一线| 免费精品视频最新在线| 日韩和的一区二在线| 亚洲视频二区| 欧美亚洲精品在线| 国产一二在线播放| 开心激情综合| 欧美专区一区| 亚洲免费专区| 在线视频日韩| 久久精品天堂| 四虎精品永久免费| 五月婷婷六月综合| 欧美www视频在线观看| 国产欧美一区二区色老头| 蜜桃传媒麻豆第一区在线观看| 久久精品国语| 激情国产在线| 国产亚洲高清在线观看| 免费日本视频一区| 中文亚洲欧美| 午夜国产欧美理论在线播放 | 久久精品五月| 日韩av在线免费观看不卡| 亚洲精品a级片| 欧美日韩国产v| 久久av综合| 欧美久久一区二区三区| 视频一区视频二区中文字幕| 欧美午夜精品一区二区三区电影| 国产精品蜜月aⅴ在线| 亚洲ww精品| 亚洲一区二区av| 午夜在线视频一区二区区别| 欧美一区二区性| 99久久99久久精品国产片果冰| 高清久久一区| 美日韩一区二区三区| 国产乱人伦精品一区| 欧美亚洲自偷自偷| 国产精品日本一区二区不卡视频 | 久久字幕精品一区| 亚洲精品日本| 国产亚洲精品久久久久婷婷瑜伽| 性欧美69xoxoxoxo| 91九色精品国产一区二区| 蜜桃精品在线| 久久久噜噜噜| 欧美69视频| 欧美aa国产视频| 久久中文字幕av| 亚洲高清久久| 亚洲少妇在线| 一区二区三区午夜视频| 蜜臀a∨国产成人精品| 亚洲精品黄色| 日本aⅴ精品一区二区三区| 亚洲精品在线国产| 99视频在线精品国自产拍免费观看| 99国产精品视频免费观看一公开| 先锋影音国产一区| 日韩精品亚洲专区在线观看| 在线日韩成人| 亚洲综合专区| 天堂av一区| 7777精品| 久久久免费人体| 日韩中文在线电影| 国产精品外国| 国产美女亚洲精品7777| 麻豆免费精品视频| 91精品国产自产在线观看永久∴| 黑森林国产精品av| 国产在线不卡一区二区三区| 99精品国产一区二区三区| 国产精品丝袜xxxxxxx| 日韩精品1区2区3区| 麻豆91小视频| 免费精品国产的网站免费观看| 久久不射网站| 91亚洲无吗| 国产精品国产一区| 好吊一区二区三区| 91av一区| 日韩欧美自拍| 亚洲一区二区三区久久久| 国产精品4hu.www| 久久网站免费观看| 在线视频精品| 麻豆91在线播放| 欧美日韩国产在线观看网站| 亚洲精品第一| 国产一区二区三区黄网站| 国产综合精品| 欧美一区免费| 99精品在线| 久久激情五月婷婷| 日韩伦理一区| 一区二区国产在线观看| 免费在线观看一区| 美女精品网站| 激情久久99| 中文字幕免费精品| 97久久精品| 99久久婷婷这里只有精品| 亚洲三级网址| av资源中文在线| 爽爽淫人综合网网站| 美女久久久久久 | 亚洲专区视频| 日本蜜桃在线观看视频| 国产精品日韩| 国产一区二区三区四区二区| 亚洲图片久久| 91精品国产91久久久久久黑人| 国产日韩欧美一区| 日韩精品诱惑一区?区三区| 日本成人在线网站| 欧美va天堂在线|