午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

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

mybatis 為什么千萬不要使用 where 1=1

瀏覽:46日期:2023-10-19 12:31:36
1.解決方案

下面是mybatis查詢語句,如果我們這次我們將 “state = ‘ACTIVE’” 設(shè)置成動(dòng)態(tài)條件,看看會(huì)發(fā)生什么。

<select resultType='Blog'> SELECT * FROM BLOG WHERE <if test='state != null'> state = #{state} </if> <if test='title != null'> AND title like #{title} </if> <if test='author != null and author.name != null'> AND author_name like #{author.name} </if></select>

如果沒有匹配的條件會(huì)怎么樣?最終這條 SQL 會(huì)變成這樣:

SELECT * FROM BLOGWHERE

這會(huì)導(dǎo)致查詢失敗。如果匹配的只是第二個(gè)條件又會(huì)怎樣?這條 SQL 會(huì)是這樣:

SELECT * FROM BLOGWHEREAND title like ‘someTitle’

這個(gè)查詢也會(huì)失敗。這個(gè)問題不能簡(jiǎn)單地用條件元素來解決。這個(gè)問題是如此的難以解決,以至于解決過的人不會(huì)再想碰到這種問題。

MyBatis 有一個(gè)簡(jiǎn)單且適合大多數(shù)場(chǎng)景的解決辦法。而在其他場(chǎng)景中,可以對(duì)其進(jìn)行自定義以符合需求。而這,只需要一處簡(jiǎn)單的改動(dòng):

<select resultType='Blog'> SELECT * FROM BLOG <where> <if test='state != null'> state = #{state} </if> <if test='title != null'>AND title like #{title} </if> <if test='author != null and author.name != null'>AND author_name like #{author.name} </if> </where></select>

where 元素只會(huì)在子元素返回任何內(nèi)容的情況下才插入 “WHERE” 子句。而且,若子句的開頭為 “AND” 或 “OR”,where 元素也會(huì)將它們?nèi)コ?/p>2.為什么不能使用1=1

1.會(huì)導(dǎo)致表中的數(shù)據(jù)索引失效2.垃圾條件,沒必要加

3.官方文檔地址

mybatis官網(wǎng)地址

到此這篇關(guān)于mybatis 為什么千萬不要使用 where 1=1的文章就介紹到這了,更多相關(guān)mybatis where1=1內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

相關(guān)文章:
主站蜘蛛池模板: 日本五十路女优 | 毛片毛片毛片 | 91麻豆精品一二三区在线 | 香蕉视频911 | 欧美日韩精品国产 | 国产成人久久精品 | 欧日韩一区二区三区 | 欧美成人a视频 | 国产日产精品一区二区三区 | 免费av中文字幕 | aa黄色大片| 久久久美女 | jizz18国产| 久久九九热 | 欧美黄色录像 | 日韩在线视频免费看 | 久草福利在线观看 | 涩色视频 | 婷婷射图 | 国产乱码久久久久 | 中文字幕avav | 极品在线 | 久久影院一区 | 视频一区欧美 | 国产区一区二区三区 | 中文字幕亚洲专区 | 偷拍视频网站 | 午夜影院体验区 | 国产性猛交╳xxx乱大交 | 午夜8888 | 欧美一级网址 | 欧美日韩精品在线视频 | 黑人巨大精品欧美一区二区 | av在线精品 | 在线观看色视频 | 我要看免费的毛片 | 午夜影院久久 | 91国产免费视频 | 精品国产一区二区三区久久久蜜臀 | 蜜臀av网站 | 免费成年人视频在线观看 |