Mybatis中case when如何处理复杂逻辑

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

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!