mybatis中<if>標(biāo)簽bool值類型為false判斷方法
昨天實(shí)現(xiàn)一個(gè)功能,根據(jù)文章的id或者別名查找文章。
起初采用mybatis的Example進(jìn)行查詢,對(duì)參數(shù)artName進(jìn)行判斷,如果是純數(shù)字就byId查詢,否則就by別名。由于查詢文章的同時(shí),需要關(guān)聯(lián)查詢文章分類標(biāo)簽,所以選擇采用select語句映射的方式查詢,但又不想寫兩個(gè)查詢方法,就使用了mybatis中動(dòng)態(tài)sql。
/**
* 查詢文章
* @param artName id 或 別名
* @param byId 如果是 true 則按照id查詢
* 否則 按照別名查詢
* @return
*/
public Article selectByArtName(@Param(value = "artName") String artName,
@Param(value = "byId") Boolean byId);
mapper中定義了一個(gè)方法,有artName和byId兩個(gè)參數(shù),artName 表示id 或 別名,byId表示是否通過id查詢。
對(duì)byId Boolean值進(jìn)行判斷時(shí),出現(xiàn)false值無效的情況,在百度了一圈發(fā)現(xiàn),普遍采用
<if test="byId != null">
a.id = #{artName}
</if>
這種方式,當(dāng)byId=true時(shí)正常執(zhí)行,但為false時(shí)不生效。后采用<choose>標(biāo)簽
<choose>
<when test="byId">
a.id = #{artName}
</when>
<otherwise>
a.alias = #{artName}
</otherwise>
</choose>
byId本身是bool值,不用進(jìn)行判斷。
注意: byId不用加#{},不然false也會(huì)無效,如果加了#{}, 在與其他值進(jìn)行比較時(shí),
如: #{byId} == true 會(huì)報(bào)空指針錯(cuò)誤,如果寫成#{byId} == 'true' 會(huì)報(bào)Linkhashmap無法轉(zhuǎn)換成String類型錯(cuò)誤。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
從最基本的Java工程搭建SpringMVC+SpringDataJPA+Hibernate
本文會(huì)介紹從一個(gè)最基本的java工程,到Web工程,到集成Spring、SpringMVC、SpringDataJPA+Hibernate,本文介紹的非常詳細(xì),具有參考借鑒價(jià)值,感興趣的朋友一起學(xué)習(xí)吧2016-05-05
SpringBoot實(shí)現(xiàn)初始化的三種策略模式
本文主要介紹了SpringBoot實(shí)現(xiàn)初始化的三種策略模式,包括默認(rèn)初始化策略、懶加載初始化策略和自定義初始化策略,具有一定的參考價(jià)值,感興趣的可以了解一下2024-12-12
Struts2學(xué)習(xí)筆記(9)-Result配置全局結(jié)果集
這篇文章主要介紹Struts2中使用Result配置全局結(jié)果集的方法,希望能給大家做一個(gè)參考。2016-06-06
springboot rabbitmq整合rabbitmq之消息持久化存儲(chǔ)問題
這篇文章主要介紹了springboot rabbitmq整合rabbitmq之消息持久化存儲(chǔ)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09
Mybatis foreach用法解析--對(duì)于list和array
這篇文章主要介紹了Mybatis foreach用法解析--對(duì)于list和array,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03
SpringBoot與spring security的結(jié)合的示例
這篇文章主要介紹了SpringBoot與spring security的結(jié)合的示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-03-03
Springboot啟動(dòng)原理和自動(dòng)配置原理解析
這篇文章主要介紹了Springboot啟動(dòng)原理和自動(dòng)配置原理解析,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-04-04

