mybatis模糊查詢之bind標(biāo)簽和concat函數(shù)用法詳解
1.二種方式都可以用來模糊查詢,都能預(yù)防 SQL 注入。但是在更換數(shù)據(jù)庫情況下,bind標(biāo)簽通用。
<if test=” userName != null and userName !=””>
and userName like concat('%' ,#{userName},'%')
</if>2.使用concat函數(shù)連接字符串,在mysql中這個(gè)函數(shù)支持多個(gè)參數(shù),但是在oracle中這個(gè)函數(shù)只支持2個(gè)參數(shù),由于不同數(shù)據(jù)庫之間的語法差異,更換數(shù)據(jù)庫,這些語法就需要重寫??梢杂胋ind標(biāo)簽來避免更換數(shù)據(jù)庫所帶來的一些麻煩。
eg.MyBatis在Oracle數(shù)據(jù)庫下用concat函數(shù)模糊查詢之參數(shù)個(gè)數(shù)無效錯(cuò)誤,因?yàn)閿?shù)據(jù)庫換成了Oracle,在模糊查詢數(shù)據(jù)的時(shí)候突然發(fā)現(xiàn)報(bào)錯(cuò)了
select * from SYS_MENU where url like concat('%',#{roleName},'%')實(shí)際上oracle中不支持concat的三個(gè)參數(shù)的拼接,需要更正為
select * from SYS_MENU where url like concat(concat('%',#{roleName}),'%')
或者使用
select * from SYS_MENU where url like '%' || #{roleName} || '%';bind標(biāo)簽使用:
bind 標(biāo)簽可以使用 OGNL 表達(dá)式創(chuàng)建一個(gè)變量井將其綁定到上下文中。
<bind name= " userNameBind ” value = ”' % '+ userNarne + ' %'” />
<if test=” userName != null and userName !=””>
and userName like #{userNameBind}
</if>bind 標(biāo)簽的兩個(gè)屬性都是必選項(xiàng)
name 為綁定到上下文的變量名, value 為 OGNL 表達(dá)式。
創(chuàng)建一個(gè) bind標(biāo)簽的變量后 , 就可以在下面直接使用,使用 bind 拼接字符串不僅可以避免因更換數(shù)據(jù)庫而修改 SQL,也能預(yù)防 SQL注入,還能實(shí)現(xiàn)多個(gè)引用userNameBind
到此這篇關(guān)于mybatis模糊查詢之bind標(biāo)簽和concat函數(shù)用法的文章就介紹到這了,更多相關(guān)mybatis模糊查詢內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java基于中介者模式實(shí)現(xiàn)多人聊天室功能示例
這篇文章主要介紹了Java基于中介者模式實(shí)現(xiàn)多人聊天室功能,詳細(xì)分析了中介者模式的概念、原理以及使用中介模式實(shí)現(xiàn)多人聊天的步驟、操作技巧與注意事項(xiàng),需要的朋友可以參考下2018-05-05
Spring Cloud Zuul路由網(wǎng)關(guān)服務(wù)過濾實(shí)現(xiàn)代碼
這篇文章主要介紹了Spring Cloud Zuul路由網(wǎng)關(guān)服務(wù)過濾實(shí)現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04
SpringBoot中的maven插件spring-boot-maven-plugin使用
這篇文章主要介紹了SpringBoot中的maven插件spring-boot-maven-plugin使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12
SpringBoot集成ElasticSearch(ES)實(shí)現(xiàn)全文搜索功能
Elasticsearch是一個(gè)開源的分布式搜索和分析引擎,它被設(shè)計(jì)用于處理大規(guī)模數(shù)據(jù)集,它提供了一個(gè)分布式多用戶能力的全文搜索引擎,本文將給大家介紹SpringBoot集成ElasticSearch(ES)實(shí)現(xiàn)全文搜索功能,需要的朋友可以參考下2024-02-02
spring?data?jpa如何使用自定義repository實(shí)現(xiàn)類
這篇文章主要介紹了spring?data?jpa如何使用自定義repository實(shí)現(xiàn)類,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11
SpringBoot整合Minio的過程(支持公有及私有bucket)
Bucket 是存儲(chǔ)Object的邏輯空間,每個(gè)Bucket之間的數(shù)據(jù)是相互隔離的,對(duì)用戶而言,相當(dāng)于存放文件的頂層文件夾,這篇文章主要介紹了SpringBoot整合Minio的過程(支持公有及私有bucket),需要的朋友可以參考下2025-03-03

