mybatis模糊查询
时间: 2023-11-04 16:06:06 浏览: 34
在 MyBatis 中进行模糊查询可以使用 SQL 的 `LIKE` 关键字,例如:
```xml
<select id="findUsersByName" parameterType="java.lang.String" resultType="User">
SELECT * FROM users WHERE name LIKE CONCAT('%', #{name}, '%')
</select>
```
在这个例子中,我们假设有一个 `users` 表,其中有一个 `name` 列用于存储用户的姓名。`findUsersByName` 方法接收一个字符串参数 `name`,然后使用 `LIKE` 关键字进行模糊匹配查询。
值得注意的是,`LIKE` 关键字很容易导致 SQL 注入攻击,因此建议使用 MyBatis 提供的动态 SQL 语法,例如:
```xml
<select id="findUsersByName" parameterType="java.lang.String" resultType="User">
SELECT * FROM users WHERE name LIKE CONCAT('%', #{name,jdbcType=VARCHAR}, '%')
</select>
```
在这个例子中,我们使用了 `jdbcType=VARCHAR` 来告诉 MyBatis 参数类型,这样就可以避免 SQL 注入攻击。同时,我们还可以使用 `<if>` 标签来动态构建 SQL 语句,例如:
```xml
<select id="findUsersByName" parameterType="java.lang.String" resultType="User">
SELECT * FROM users
<where>
<if test="name != null">
AND name LIKE CONCAT('%', #{name,jdbcType=VARCHAR}, '%')
</if>
</where>
</select>
```
在这个例子中,我们使用了 `<where>` 标签来包含动态 SQL 语句,然后使用 `<if>` 标签来判断参数是否为 `null`,如果不为 `null`,则动态构建 SQL 语句。这样可以更加安全地进行模糊查询。