mybatis動(dòng)態(tài)SQL?if的test寫法及規(guī)則詳解
mybatis動(dòng)態(tài)SQL if的test寫法
使用動(dòng)態(tài)SQL最常見情景
是根據(jù)條件包含 where 子句的一部分。
比如:
<select id="findActiveBlogWithTitleLike"
resultType="Blog">
SELECT * FROM BLOG
WHERE state = ‘ACTIVE'
<if test="title != null">
AND title like #{title}
</if>
</select>
其中 test 的表達(dá)式是基于OGNL 的表達(dá)式,語法規(guī)則也是OGNL的語法規(guī)則。
官方語法規(guī)則手冊(cè)
OGNL官方表達(dá)式手冊(cè):https://commons.apache.org/proper/commons-ognl/language-guide.html
舉個(gè)例子

上圖是官方指導(dǎo)的一部分,主要說明了,在test中無法使用<= 等符號(hào)可以使用 lte 代替。
| 運(yùn)算符 | 代替字符 |
|---|---|
| < | lt |
| <= | lte |
| > | gt |
| >= | gte |
mybatis if test動(dòng)態(tài)sql語句
<select id="getStudentId" parameterType="java.lang.String" resultType="java.lang.String">
? ? ? ? SELECT MAX(Student_ID) FROM Student
? ? ? ? <where>
? ? ? ? ? ? <if test="classid !=null and classid !=''"> ?
? ? ? ? ? ? ? ? AND CLASS_ID = {student.classID}?
? ? ? ? ? ? </if>
? ? ? ? ? ? <if test="age ==null or age ==''"> ?
? ? ? ? ? ? ? ? AND AGE = {student.age}
? ? ? ? ? ? </if>
? ? ? ? </where>
</select>以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring Cloud Stream 高級(jí)特性使用詳解
這篇文章主要為大家介紹了Spring Cloud Stream 高級(jí)特性使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09
Spring MVC攔截器_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
Spring MVC的攔截器,是屬于HandlerMapping級(jí)別的,可以有多個(gè)HandlerMapping ,每個(gè)HandlerMapping可以有自己的攔截器,具體內(nèi)容詳情大家通過本文學(xué)習(xí)吧2017-08-08
Eclipse如何導(dǎo)入Maven項(xiàng)目詳解(新手初學(xué))
這篇文章主要介紹了Eclipse如何導(dǎo)入Maven項(xiàng)目詳解(新手初學(xué)),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-12-12
Mybatis查詢Sql結(jié)果未映射到對(duì)應(yīng)得實(shí)體類上的問題解決
使用mybatis查詢表數(shù)據(jù)得時(shí)候,發(fā)現(xiàn)對(duì)應(yīng)得實(shí)體類字段好多都是null,本文主要介紹了Mybatis查詢Sql結(jié)果未映射到對(duì)應(yīng)得實(shí)體類上的問題解決,具有一定的參考價(jià)值,感興趣的可以了解一下2024-02-02
SpringBoot中@EnableAsync和@Async注解的使用小結(jié)
在SpringBoot中,可以通過@EnableAsync注解來啟動(dòng)異步方法調(diào)用的支持,通過@Async注解來標(biāo)識(shí)異步方法,讓方法能夠在異步線程中執(zhí)行,本文就來介紹一下,感興趣的可以了解一下2023-11-11

