xml 动态sql里 用户信息等于工号或者用户信息模糊查询用户名
时间: 2023-07-30 16:09:23 浏览: 97
在 MyBatis 的动态 SQL 中,可以使用 `<if>` 元素来根据条件动态拼接 SQL 语句。以下是一个实现用户信息等于工号或者用户信息模糊查询用户名的动态 SQL 示例:
```xml
<select id="getUserInfo" parameterType="map" resultType="User">
SELECT * FROM users
WHERE 1 = 1
<if test="user_id != null">
AND user_id = #{user_id}
</if>
<if test="user_name != null">
AND user_name LIKE CONCAT('%', #{user_name}, '%')
</if>
</select>
```
其中,`getUserInfo` 是 SQL 映射语句的 ID,`parameterType` 表示传入参数类型,`resultType` 表示返回结果类型。在 SQL 语句中,`1 = 1` 是为了方便后面的条件拼接,不影响查询结果。`<if>` 元素的 `test` 属性指定条件表达式,如果满足条件则拼接该条件的 SQL 语句。`${user_id}` 和 `${user_name}` 是从传入参数中获取的工号和用户名,可以通过 Map 或实体类来传入。`CONCAT('%', #{user_name}, '%')` 是拼接模糊匹配的字符串,`#{}` 表示占位符,可以防止 SQL 注入。
这样实现的好处是可以根据传入参数动态生成 SQL 语句,提高查询效率和安全性。
阅读全文