MyBatis动态SQL技巧包括:if、choose、when、otherwise、trim、where、set等标签,实现条件查询和动态拼接SQL语句。
MyBatis是一个流行的Java持久层框架,它提供了许多动态SQL技巧,可以根据不同的条件生成不同的SQL语句,以下是一些常用的MyBatis动态SQL技巧:
1、if标签
当满足某个条件时,拼接一段SQL片段。
示例:
```xml
<select id="findActiveUsers" resultType="User">
SELECT * FROM user WHERE 1=1
<if test="username != null and username != ''">
AND username = #{username}
</if>
<if test="age != null">
AND age = #{age}
</if>
</select>
```
2、choose (when, otherwise) 标签
根据不同的条件选择不同的SQL片段。
示例:
```xml
<select id="findActiveUsers" resultType="User">
SELECT * FROM user WHERE 1=1
<choose>
<when test="username != null and username != ''">
AND username = #{username}
</when>
<otherwise>
AND id = #{id}
</otherwise>
</choose>
</select>
```
3、trim (prefix, prefixOverrides) 和 trim (prefix, suffix, suffixOverrides) 标签
为SQL语句添加前缀或后缀。
示例:
```xml
<update id="deleteUserByIds">
DELETE FROM user WHERE id IN
<foreach item="item" index="index" collection="ids" open="(" close=")" separator=",">
#{item}
</foreach>
</update>
```
4、foreach标签
遍历集合,生成逗号分隔的IN子句。
示例:
```xml
<select id="findActiveUsers" resultType="User">
SELECT * FROM user WHERE id IN
<foreach item="item" index="index" collection="ids" open="(" close=")" separator=",">
#{item}
</foreach>
</select>
```
5、bind标签(仅在XML中可用)
创建一个变量并绑定到一个表达式上,这个变量可以在后续的SQL语句中使用。
示例:
```xml
<select id="findActiveUsers" resultType="User">
SELECT * FROM user WHERE id = #{user_id} AND status = 'active'
<bind name="pattern" value="'%' + user_id + '%'"/>
<where>username LIKE #{pattern}</where>
</select>
```
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/491311.html