mybatis模糊查询动态构建
时间: 2023-09-14 17:14:16 浏览: 142
MyBatis实现动态查询、模糊查询功能
MyBatis 提供了动态 SQL 功能,可以根据实际情况动态构建 SQL 语句。模糊查询可以使用 MyBatis 的动态 SQL 功能来实现,具体步骤如下:
1. 在 Mapper.xml 文件中编写 SQL 语句,使用 LIKE 关键字进行模糊查询,例如:
```
<select id="findUsersByName" parameterType="String" resultType="User">
SELECT * FROM users WHERE name LIKE #{name}
</select>
```
2. 在 Mapper 接口中定义方法,方法的名称和参数类型必须和 Mapper.xml 文件中的定义一致:
```
public interface UserMapper {
List<User> findUsersByName(String name);
}
```
3. 在调用 Mapper 接口的方法时,传入模糊查询的关键字,例如:
```
List<User> users = userMapper.findUsersByName("%张%");
```
注意:在传入参数时,需要使用 % 符号表示模糊查询的通配符。在 MyBatis 中,#{} 表示使用预编译语句,会把传入的参数转义,因此不需要手动添加引号。
4. 如果需要根据多个条件进行动态构建 SQL 语句,可以使用 MyBatis 的动态 SQL 标签,例如:
```
<select id="findUsers" parameterType="User" resultType="User">
SELECT * FROM users
<where>
<if test="name != null and name != ''">
AND name LIKE #{name}
</if>
<if test="age != null">
AND age = #{age}
</if>
</where>
</select>
```
在上面的 SQL 语句中,使用了 <where> 标签将条件括起来,使用 <if> 标签判断条件是否满足,可以动态构建 SQL 语句。在调用 Mapper 接口的方法时,传入 User 对象,其中属性值为 null 的条件会被忽略。例如:
```
User user = new User();
user.setName("%张%");
List<User> users = userMapper.findUsers(user);
```
上面的代码会根据 name 属性进行模糊查询,不会根据 age 属性进行查询。
阅读全文