mybatis動態(tài)SQL?if的test寫法及規(guī)則詳解
mybatis動態(tài)SQL if的test寫法
使用動態(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ī)則手冊
OGNL官方表達(dá)式手冊:https://commons.apache.org/proper/commons-ognl/language-guide.html
舉個例子

上圖是官方指導(dǎo)的一部分,主要說明了,在test中無法使用<= 等符號可以使用 lte 代替。
| 運(yùn)算符 | 代替字符 |
|---|---|
| < | lt |
| <= | lte |
| > | gt |
| >= | gte |
mybatis if test動態(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>以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring MVC攔截器_動力節(jié)點(diǎn)Java學(xué)院整理
Spring MVC的攔截器,是屬于HandlerMapping級別的,可以有多個HandlerMapping ,每個HandlerMapping可以有自己的攔截器,具體內(nèi)容詳情大家通過本文學(xué)習(xí)吧2017-08-08
Eclipse如何導(dǎo)入Maven項(xiàng)目詳解(新手初學(xué))
這篇文章主要介紹了Eclipse如何導(dǎo)入Maven項(xiàng)目詳解(新手初學(xué)),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-12-12
Mybatis查詢Sql結(jié)果未映射到對應(yīng)得實(shí)體類上的問題解決
使用mybatis查詢表數(shù)據(jù)得時候,發(fā)現(xiàn)對應(yīng)得實(shí)體類字段好多都是null,本文主要介紹了Mybatis查詢Sql結(jié)果未映射到對應(yīng)得實(shí)體類上的問題解決,具有一定的參考價值,感興趣的可以了解一下2024-02-02
SpringBoot中@EnableAsync和@Async注解的使用小結(jié)
在SpringBoot中,可以通過@EnableAsync注解來啟動異步方法調(diào)用的支持,通過@Async注解來標(biāo)識異步方法,讓方法能夠在異步線程中執(zhí)行,本文就來介紹一下,感興趣的可以了解一下2023-11-11

