1. 程式人生 > >Mybatis中字串比較常容易忽略的問題

Mybatis中字串比較常容易忽略的問題

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為強型別語言,所以不能這樣寫.