mybatis xml resultMap 条件查询
时间: 2023-10-29 16:07:17 浏览: 89
在 Mybatis 中,可以通过使用 resultMap 标签来定义查询结果的映射关系,从而将查询结果映射到 Java 对象中。如果需要进行条件查询,可以在 resultMap 标签中使用 <if> 标签来定义条件判断语句,从而动态生成 SQL 语句。
以下是一个使用 resultMap 进行条件查询的示例:
```
<!-- 定义 resultMap -->
<resultMap id="userResultMap" type="User">
<id property="id" column="id"/>
<result property="username" column="username"/>
<result property="age" column="age"/>
<result property="gender" column="gender"/>
</resultMap>
<!-- 使用 resultMap 进行条件查询 -->
<select id="getUserList" resultMap="userResultMap">
SELECT * FROM user
<where>
<if test="username != null">
AND username like #{username}
</if>
<if test="age != null">
AND age = #{age}
</if>
<if test="gender != null">
AND gender = #{gender}
</if>
</where>
</select>
```
在这个示例中,我们定义了一个名为 userResultMap 的 resultMap,用于将查询结果映射到 User 对象中。然后,在 getUserList 的 SQL 语句中,使用了 <where> 标签来定义查询条件,通过 <if> 标签来判断是否需要加入该条件。其中,test 属性中的表达式用于判断条件是否成立,如果成立,则将条件加入 SQL 语句中,否则跳过该条件。
在实际使用中,我们可以通过传入不同的参数来动态生成 SQL 语句,从而实现条件查询。例如,如果需要查询用户名为 "张三",年龄为 20 的用户列表,可以使用以下代码:
```
List<User> userList = sqlSession.selectList("getUserList", new User("张三", 20, null));
```
其中,new User("张三", 20, null) 表示传入的参数对象,其属性值分别为用户名、年龄和性别,其中性别为 null,表示不需要进行性别条件的查询。Mybatis 会根据传入的对象动态生成 SQL 语句,从而实现条件查询。
阅读全文