在 MyBatis 中,可以使用 <if>
標簽結合 SQL 語句中的 CASE WHEN
來處理復雜的邏輯。以下是一個示例:
首先,創建一個實體類 Person
:
public class Person {
private Integer id;
private String name;
private Integer age;
// 省略 getter 和 setter 方法
}
然后,在 MyBatis 的映射文件中編寫動態 SQL 查詢:
<select id="findPersons" parameterType="map" resultMap="personResultMap">
SELECT * FROM person
<where>
<if test="name != null">
AND name = #{name}
</if>
<if test="age != null">
AND age = #{age}
</if>
<if test="minAge != null and maxAge != null">
AND age BETWEEN #{minAge} AND #{maxAge}
</if>
</where>
</select>
在這個示例中,我們使用 <where>
標簽來確保查詢條件以 “AND” 連接。<if>
標簽用于根據參數是否為 null
來決定是否添加相應的查詢條件。
接下來,創建一個結果映射文件 personResultMap
:
<resultMap id="personResultMap" type="com.example.Person">
<id property="id" column="id"/>
<result property="name" column="name"/>
<result property="age" column="age"/>
</resultMap>
現在,你可以在 Java 代碼中調用這個查詢方法:
List<Person> persons = sqlSession.selectList("com.example.PersonMapper.findPersons", null);
這個示例展示了如何在 MyBatis 中使用 <if>
標簽和 SQL 語句中的 CASE WHEN
來處理復雜的邏輯。你可以根據需要調整查詢條件和邏輯。