mybatis如何实现按照条件查询
时间: 2023-06-29 15:02:42 浏览: 123
mybatis条件查询
MyBatis可以通过在Mapper.xml文件中编写SQL语句并使用动态SQL标签来实现按照条件查询。
以下是一个简单的示例,假设我们有一个表格叫做`user`,其中包含了列名为`id`、`name`和`age`的三个字段。我们想要根据姓名和年龄来查询用户记录,如果这两个条件都没有指定,则返回所有记录。
首先,在Mapper.xml文件中编写SQL语句:
```xml
<select id="selectUsers" parameterType="map" resultType="User">
SELECT * FROM user
<where>
<if test="name != null">
AND name = #{name}
</if>
<if test="age != null">
AND age = #{age}
</if>
</where>
</select>
```
在这个查询语句中,我们使用了`<where>`标签来包含动态SQL语句块,它会自动去掉第一个AND或OR关键字。如果`name`和`age`都为空,则查询语句会返回所有记录。
在Mapper接口中定义方法:
```java
public interface UserMapper {
List<User> selectUsers(Map<String, Object> params);
}
```
在Java代码中使用:
```java
Map<String, Object> params = new HashMap<>();
params.put("name", "张三");
params.put("age", 20);
List<User> userList = userMapper.selectUsers(params);
```
在这个示例中,我们将查询条件封装到一个Map对象中,Map的键值对分别对应着查询语句中的参数名和参数值。MyBatis会根据参数名来匹配Mapper.xml文件中的SQL语句中的参数名称。如果Map中没有包含某个条件,则该条件会被忽略。如果Map对象为null,则查询语句会返回所有记录。
阅读全文