mybatis if標(biāo)簽判斷不生效的解決方法
實(shí)際需求
<if test='computationRule == ’1’'> FROM app_sz_bbb a</if><if test='computationRule == ’2’'> FROM app_ccc a</if>
這種情況不生效,
原因:mybatis是用OGNL表達(dá)式來解析的,在OGNL的表達(dá)式中,’0’會(huì)被解析成字符,java是強(qiáng)類型的,char 和 一個(gè)string 會(huì)導(dǎo)致不等,所以if標(biāo)簽中的sql不會(huì)被解析。
先說怎么解決
三種:
加 .toString()
<if test='computationRule == ’1’.toString()'> FROM app_sz_bbb a</if><if test='computationRule == ’2’.toString()'> FROM app_ccc a</if>
choose when 標(biāo)簽代替
<choose> <when test='computationRule == ’1’'> FROM app_sz_bbb a </when> <otherwise> FROM app_sz_bbb a </otherwise> </choose>
單引號(hào) 換成雙引號(hào)
<if test=’computationRule == '1'’> FROM app_sz_bbb a</if><if test=’computationRule == '2'’> FROM app_ccc a</if>MyBatis 中if 標(biāo)簽 判斷字符串不生效
異常sql 的mapper 文件:
<if test='isBound != null and isBound !=’’ and isBound == ’1’'> and box_sid is not null </if><if test='isBound != null and isBound !=’’ and isBound == ’2’'> and box_sid is null </if>
正確sql 的mapper 文件
<if test='isBound != null and isBound !=’’ and isBound == ’1’.toString()'> and box_sid is not null </if><if test='isBound != null and isBound !=’’ and isBound == ’2’.toString()'> and box_sid is null </if>
到此這篇關(guān)于mybatis if標(biāo)簽判斷不生效的解決方法的文章就介紹到這了,更多相關(guān)mybatis if標(biāo)簽判斷不生效內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. 不要忽視Oracle 10g STATSPACK新功能2. Mysql入門系列:MYSQL表達(dá)式求值和MYSQL類型轉(zhuǎn)換3. Mysql入門系列:MYSQL創(chuàng)建、刪除、索引和更改表4. 使用MySqldump命令導(dǎo)出數(shù)據(jù)時(shí)的注意5. Windwos下MySQL 64位壓縮包的安裝方法學(xué)習(xí)記錄6. MySQL基礎(chǔ)教程9 —— 函數(shù)之日期和時(shí)間函數(shù)7. Mysql 實(shí)現(xiàn)字段拼接的三個(gè)函數(shù)8. ACCESS轉(zhuǎn)SQL數(shù)據(jù)庫(kù)相關(guān)的幾個(gè)技能9. Mybatis傳入List實(shí)現(xiàn)批量更新的示例代碼10. SQL Server 2005 Reporting Services的一個(gè)bug及其解決方法
