ssm中动态sql咋写
时间: 2023-07-25 20:46:52 浏览: 48
在 SSM 中,动态 SQL 可以通过 MyBatis 提供的动态 SQL 标签来实现。以下是一些常用的动态 SQL 标签:
1. `<if>` 标签:可以根据条件动态地生成 SQL 片段。
例如,在查询用户列表时,如果有用户名关键字,则使用 `<if>` 标签来拼接查询条件:
```
<select id="getUserList" resultMap="userMap">
SELECT * FROM user
<where>
<if test="keyword != null">
AND username LIKE CONCAT('%', #{keyword}, '%')
</if>
</where>
</select>
```
2. `<choose>` 标签:类似于 Java 中的 switch 语句,可以根据不同的条件生成不同的 SQL 片段。
例如,在查询用户列表时,如果同时有用户名关键字和用户状态,则使用 `<choose>` 标签来拼接查询条件:
```
<select id="getUserList" resultMap="userMap">
SELECT * FROM user
<where>
<choose>
<when test="keyword != null and status != null">
AND username LIKE CONCAT('%', #{keyword}, '%')
AND status = #{status}
</when>
<when test="keyword != null">
AND username LIKE CONCAT('%', #{keyword}, '%')
</when>
<when test="status != null">
AND status = #{status}
</when>
</choose>
</where>
</select>
```
3. `<foreach>` 标签:用于遍历集合或数组,并生成相应的 SQL 片段。
例如,在批量插入用户时,可以使用 `<foreach>` 标签来拼接插入语句:
```
<insert id="batchInsertUser" parameterType="java.util.List">
INSERT INTO user (username, password, email)
VALUES
<foreach collection="list" item="user" separator=",">
(#{user.username}, #{user.password}, #{user.email})
</foreach>
</insert>
```
以上是一些常用的动态 SQL 标签,通过这些标签的组合,可以灵活地拼接 SQL 语句,实现动态 SQL 的功能。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![sql](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)