【踩坑記錄】Mybatis動態SQL表達式test

問題描述:當我遇到了字符串等值判斷的時候,坑來了

錯誤代碼鎮樓

                <choose>
                    <when test="pictureDTO.isFree = '是' ">
                        1,
                    </when>
                    <otherwise>
                        0,
                    </otherwise>
                </choose>

首先,test表達式的等值判斷使用"==",弱智的我原以爲會和Mysql一樣用"=",然後insert的時候,字段賦值出現問題。

改正代碼一

                <choose>
                    <when test="pictureDTO.isFree == '是' ">
                        1,
                    </when>
                    <otherwise>
                        0,
                    </otherwise>
                </choose>

其次,字符串的判斷,要用''裏面套"",的方式,因爲Mybatis是使用OGNL表達式來進行解析的。

改正代碼二:【正確代碼

                <choose>
                    <when test='pictureDTO.isFree = "是" '>
                        1,
                    </when>
                    <otherwise>
                        0,
                    </otherwise>
                </choose>

後話:只是改正了錯誤,沒有深究,詳細的原因可以參考以下博文【排名分先後(手動狗頭)】

MyBatis if test 字符串判斷問題

使用MyBatis動態SQL表達式時遇到的“坑”

深入瞭解MyBatis參數

MyBatis中的OGNL教程

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章