亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MyBatis動態<if>標簽如何使用

發布時間:2023-03-07 11:19:26 來源:億速云 閱讀:133 作者:iii 欄目:開發技術

這篇文章主要介紹“MyBatis動態<if>標簽如何使用”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“MyBatis動態<if>標簽如何使用”文章能幫助大家解決問題。

一. if標簽判斷字符串

查詢參數Param如下。

public class Param {
    private int id;
    private String level;
    private int times;
    private String timestamp;
    // 省略get和set
}

語句如下。

<select id="queryEvents" resultMap="eventResultMap">
    SELECT
        id,
        e_name,
        e_times,
        e_level
    FROM event
    WHERE id=#{id}
    <if test="level != null and level != ''">
        AND e_level=#{level}
    </if>
</select>

上述是判斷字符串是否為空(null或者空串),不為空時,為WHERE子句添加額外的條件。

通過<if>標簽判斷字符串是否為空,是<if>標簽使用頻率最高的用法,但是有時也會通過<if>標簽來判斷字符串的值,這里有多種寫法,下面給出正確寫法,推薦寫法和錯誤寫法。

正確寫法1

<select id="queryEvents" resultMap="eventResultMap">
    SELECT
        id,
        e_name,
        e_times,
        e_level
    FROM event
    WHERE id=#{id}
    <if test="level == 'secondary'">
        AND e_times>10
    </if>
</select>

注意''單引號中一定需要是多個字符,如果只有一個字符,會報錯。

正確寫法2

<select id="queryEvents" resultMap="eventResultMap">
    SELECT
        id,
        e_name,
        e_times,
        e_level
    FROM event
    WHERE id=#{id}
    <if test="level == 'secondary'.toString()">
        AND e_times>10
    </if>
</select>

這種寫法不限制''單引號中的字符個數,一個或多個都可以。

推薦寫法

<select id="queryEvents" resultMap="eventResultMap">
    SELECT
        id,
        e_name,
        e_times,
        e_level
    FROM event
    WHERE id=#{id}
    <if test='level == "secondary"'>
        AND e_times>10
    </if>
</select>

推薦外層用單引號,內層用雙引號的寫法,能少踩很多坑。

特別注意:錯誤寫法

<select id="queryEvents" resultMap="eventResultMap">
    SELECT
        id,
        e_name,
        e_times,
        e_level
    FROM event
    WHERE id=#{id}
    <if test="level == 'A'">
        AND e_times>10
    </if>
</select>

這種寫法會報錯,因為像'A'這種單個字符的情況會被判定為字符,所以MyBatis認為字符串在與字符做比較,從而報錯。但是如果是'AA'或者'A'.toString() 這種,就會被判定為字符串,就正常。

二. if標簽判斷數字

查詢參數Param如下。

public class Param {
    private int id;
    private String level;
    private int times;
    private String timestamp;
    // 省略get和set
}

語句如下。

<select id="queryEvents3" resultMap="eventResultMap">
    SELECT
        id,
        e_name,
        e_times,
        e_level
    FROM event
    WHERE e_level=#{level}
    <if test="times != null">
        AND e_times>#{times}
    </if>
</select>

通過<if>標簽也可以對數字判空,同時<if>標簽也可以判斷數字的值,這里有多種寫法,下面給出正確寫法,推薦寫法和錯誤寫法。

正確寫法1

<select id="queryEvents2" resultMap="eventResultMap">
    SELECT
        id,
        e_name,
        e_times,
        e_level
    FROM event
    WHERE e_level=#{level}
    <if test="times > '10'">
        AND e_times>#{times}
    </if>
</select>

注意''單引號中一定需要是多個數字。

正確寫法2

<select id="queryEvents2" resultMap="eventResultMap">
    SELECT
        id,
        e_name,
        e_times,
        e_level
    FROM event
    WHERE e_level=#{level}
    <if test="times > '0'.toString()">
        AND e_times>#{times}
    </if>
</select>

這種寫法不限制''單引號中的數字個數,一個或多個都可以。

正確寫法3

<select id="queryEvents" resultMap="eventResultMap">
    SELECT
        id,
        e_name,
        e_times,
        e_level
    FROM event
    WHERE e_level=#{level}
    <if test="times > 0">
        AND e_times>#{times}
    </if>
</select>

判斷條件可以直接寫數字。

推薦寫法

<select id="queryEvents2" resultMap="eventResultMap">
    SELECT
        id,
        e_name,
        e_times,
        e_level
    FROM event
    WHERE e_level=#{level}
    <if test='times > "0"'>
        AND e_times>#{times}
    </if>
</select>

推薦外層用單引號,內層用雙引號的寫法,能少踩很多坑。

錯誤寫法

<select id="queryEvents" resultMap="eventResultMap">
    SELECT
        id,
        e_name,
        e_times,
        e_level
    FROM event
    WHERE e_level=#{level}
    <if test="times > '0'">
        AND e_times>#{times}
    </if>
</select>

'0'這種單個數字會被判定為字符,而字符'0'的ASCII值是48,所以times為49及以上時,才滿足times > '0',所以這里有坑,切記。

關于“MyBatis動態<if>標簽如何使用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

华容县| 新野县| 桑植县| 平湖市| 西平县| 嫩江县| 宜兰县| 三台县| 农安县| 南宫市| 沙洋县| 台东县| 诸城市| 七台河市| 陕西省| 合肥市| 浏阳市| 长治市| 寿光市| 福贡县| 同心县| 普兰县| 那曲县| 浙江省| 来安县| 河间市| 武宁县| 土默特右旗| 灌云县| 开原市| 托克逊县| 博乐市| 灵山县| 溆浦县| 香河县| 易门县| 邵东县| 安塞县| 全南县| 冕宁县| 星子县|