Mybatis中 if test字元串比較,$和 佔位符區別

今天在做項目時總是報一個錯NumberFormatException,我上網搜索了是格式轉化錯誤,後來仔細一看原來是我的mybatis中字元串的比較寫的有問題,沒有進行轉化,廢話不多說直接上代碼:

錯誤的寫法:

<when test="fenlei == '在建工程' ">

AND f.fenlei in ('工業類','商業類','住宅類','辦公類')

</when>

正確的寫法:

<when test="fenlei == '在建工程'.toString()">

AND f.fenlei in ('工業類','商業類','住宅類','辦公類')

</when>

Advertisements

注意:字元串在進行比較時需要進行toString轉化一下,不然會報錯

還和大家分享一下在mybatis中#和$佔位符的區別:

1:$value$:沒有進行預編譯,直接替換參數value;容易發生sql注入

2:#value#:會進行預編譯成?佔位符,不會發生SQL注入

Advertisements

你可能會喜歡