insert动态sql
时间: 2023-10-20 09:34:54 浏览: 83
oracle+mybatis 使用动态Sql当插入字段不确定的情况下实现批量insert
在MyBatis中,可以通过使用动态SQL来实现插入语句的动态入参。通过动态SQL,我们可以根据不同的情况来决定插入哪些字段和对应的值。
首先,在映射文件中定义插入语句的SQL代码。例如,原始的插入语句如下:
```xml
<insert id="addUser" parameterType="user">
insert into smbms_user(userCode, userName, userPassword, gender, address, phone)
values(#{userCode}, #{userName}, #{userPassword}, #{gender}, #{address}, #{phone})
</insert>
```
接下来,我们可以使用MyBatis提供的动态SQL标签,如`<if>`、`<choose>`、`<when>`和`<otherwise>`来根据条件动态生成SQL语句。
例如,如果想要实现插入时根据情况只插入部分字段,可以修改插入语句如下:
```xml
<insert id="addUser" parameterType="user">
insert into smbms_user
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="userCode != null">userCode,</if>
<if test="userName != null">userName,</if>
<if test="userPassword != null">userPassword,</if>
<if test="gender != null">gender,</if>
<if test="address != null">address,</if>
<if test="phone != null">phone,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="userCode != null">#{userCode},</if>
<if test="userName != null">#{userName},</if>
<if test="userPassword != null">#{userPassword},</if>
<if test="gender != null">#{gender},</if>
<if test="address != null">#{address},</if>
<if test="phone != null">#{phone},</if>
</trim>
</insert>
```
通过使用`<if>`标签,我们可以根据不同的条件决定是否插入对应的字段和值。这样,无论插入多少字段,我们只需要在插入语句中写一条SQL语句,在映射接口中写一个方法即可,MyBatis会根据我们的入参动态生成SQL语句进行执行。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>
阅读全文