91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

Mybatis中case when怎樣實現動態查詢

小樊
92
2024-10-13 15:16:36
欄目: 編程語言

在 MyBatis 中,可以使用 <if> 標簽結合 SQL 的 CASE WHEN 語句來實現動態查詢。以下是一個簡單的示例:

首先,創建一個實體類 User

public class User {
    private Integer id;
    private String name;
    private Integer age;
    // 省略 getter 和 setter 方法
}

然后,在 MyBatis 的映射文件中編寫動態查詢的 SQL:

<select id="findUsersByCondition" resultMap="UserResultMap">
    SELECT * FROM user
    <where>
        <if test="id != null">
            AND id = #{id}
        </if>
        <if test="name != null and name != ''">
            AND name LIKE CONCAT('%', #{name}, '%')
        </if>
        <if test="age != null">
            AND age = #{age}
        </if>
    </where>
    <if test="orderBy != null and orderBy != ''">
        ORDER BY ${orderBy}
    </if>
</select>

在這個示例中,我們使用了 <where> 標簽來自動處理 SQL 語句中的 WHERE 子句,避免了在查詢條件為空時出現多余的 AND 關鍵字。同時,我們還使用了 <if> 標簽來根據傳入的參數動態生成查詢條件。

接下來,創建一個結果映射類 UserResultMap

<resultMap id="UserResultMap" type="com.example.User">
    <id property="id" column="id"/>
    <result property="name" column="name"/>
    <result property="age" column="age"/>
</resultMap>

最后,在你的 DAO 接口中添加一個方法調用這個映射文件中的 SQL:

public interface UserDao {
    List<User> findUsersByCondition(@Param("id") Integer id, @Param("name") String name, @Param("age") Integer age, @Param("orderBy") String orderBy);
}

現在,你可以通過傳入不同的參數來調用 findUsersByCondition 方法,實現動態查詢。例如:

List<User> users = userDao.findUsersByCondition(1, null, null, "age DESC");

0
和田市| 伊川县| 南漳县| 姜堰市| 邹平县| 烟台市| 贵溪市| 连云港市| 大庆市| 霞浦县| 昌黎县| 新巴尔虎右旗| 平湖市| 游戏| 团风县| 盐城市| 蓝田县| 苍山县| 永寿县| 托克托县| 宜阳县| 宝鸡市| 金山区| 比如县| 扬中市| 正阳县| 舞钢市| 临桂县| 昌吉市| 河北区| 平昌县| 北川| 哈密市| 南皮县| 阿拉尔市| 临海市| 西乌珠穆沁旗| 武鸣县| 上杭县| 当雄县| 康马县|