Mybatis中字串比較常容易忽略的問題
阿新 • • 發佈:2019-02-12
mapper檔案中if標籤中字串的比較,當使用"=="和"!="來判斷時注意如下細節:
正確方式一:
<select id="queryList" parameterType="map" resultType="map"> SELECT sys_user.id_, sys_user.name_ FROM sys_user <where> <if test='classify_!= null and classify_!= ''and classify_== "3"'> AND sys_user.name_ like CONCAT('%',#{descript},'%') </if> </where> </select>
正確方式二:(單雙引號的使用)
<select id="queryList" parameterType="map" resultType="map"> SELECT sys_user.id_, sys_user.name_ FROM sys_user <where> <if test="classify_!= null and classify_!= '' and classify_== '3'.toString()"> AND sys_user.name_ like CONCAT('%',#{descript},'%') </if> </where> </select>
錯誤方式:
<select id="queryList" parameterType="map" resultType="map"> SELECT sys_user.id_, sys_user.name_ FROM sys_user <where> <if test="classify_!= null and classify_!= ''and classify_== '3'"> AND sys_user.name_ like CONCAT('%',#{descript},'%') </if> </where> </select>
原因:
因為Mybatis會把 'XXX' 解析為字元,java為強型別語言,所以不能這樣寫.