阅读量:0
在 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
来处理复杂的逻辑。你可以根据需要调整查询条件和逻辑。