使用mybatis 对 oracle数据批量插入、更新
2018-01-23 14:55
721 查看
正确的mybatis的mapper的sql配置如下:
<insert id="addList" parameterType="java.util.List" useGeneratedKeys="false">
INSERT ALL
<foreach item="item" index="index" collection="list">
INTO T_APPLAUD
(
ID,
USER_ID,
BUSINESS_TYPE,
PRODUCT_ID,
CREATE_TIME
) VALUES
(
#{item.id, jdbcType=NUMERIC},
#{item.userId, jdbcType=VARCHAR},
#{item.businessType, jdbcType=VARCHAR},
#{item.productId, jdbcType=VARCHAR},
#{item.createdTime, jdbcType=NUMERIC}
)
</foreach>
SELECT 1 FROM DUAL
</insert>
另外一种方法是 insert into table(...) (select ... from dual) union all (select ... from dual)
<insert id="addList" parameterType="java.util.List" useGeneratedKeys="false">
INSERT INTO T_APPLAUD
(
ID,
USER_ID,
BUSINESS_TYPE,
PRODUCT_ID,
CREATE_TIME
)
<foreach item="item" index="index" collection="list" separator="union all">
(
SELECT
#{item.id},
#{item.userId},
#{item.businessType},
#{item.productId},
#{item.createdTime}
FROM DUAL
)
</foreach>
</insert>
https://www.cnblogs.com/feixian/p/5960111.html https://www.cnblogs.com/xunux/p/4882761.html
<insert id="addList" parameterType="java.util.List" useGeneratedKeys="false">
INSERT ALL
<foreach item="item" index="index" collection="list">
INTO T_APPLAUD
(
ID,
USER_ID,
BUSINESS_TYPE,
PRODUCT_ID,
CREATE_TIME
) VALUES
(
#{item.id, jdbcType=NUMERIC},
#{item.userId, jdbcType=VARCHAR},
#{item.businessType, jdbcType=VARCHAR},
#{item.productId, jdbcType=VARCHAR},
#{item.createdTime, jdbcType=NUMERIC}
)
</foreach>
SELECT 1 FROM DUAL
</insert>
另外一种方法是 insert into table(...) (select ... from dual) union all (select ... from dual)
<insert id="addList" parameterType="java.util.List" useGeneratedKeys="false">
INSERT INTO T_APPLAUD
(
ID,
USER_ID,
BUSINESS_TYPE,
PRODUCT_ID,
CREATE_TIME
)
<foreach item="item" index="index" collection="list" separator="union all">
(
SELECT
#{item.id},
#{item.userId},
#{item.businessType},
#{item.productId},
#{item.createdTime}
FROM DUAL
)
</foreach>
</insert>
传入的参数只要是list类型的参数就行了。。。。。。。。。。。。。。 1、批量插入 <insert id="insertBatch" parameterType="java.util.List"> INSERT INTO T_CITY_INDEX( id,city_code ) select SEQ_CITY_INDEX.NEXTVAL,cd.* from( <foreach collection="list" item="item" index="index" close=")" open="(" separator="union"> select #{item.cityCode,jdbcType=VARCHAR}, #{item.cityName,jdbcType=VARCHAR} from dual </foreach> ) cd </insert> 2、批量跟新 <update id="updateBatch" parameterType="java.util.List"> <foreach collection="list" item="item" index="index" open="begin" close=";end;" separator=";"> update T_CITY_INDEX t set t.city_name= #{item.cityName,jdbcType=VARCHAR} , t.district_name= #{item.districtName,jdbcType=VARCHAR} , where t.id = #{item.id,jdbcType=NUMERIC} </foreach> </update>
https://www.cnblogs.com/feixian/p/5960111.html https://www.cnblogs.com/xunux/p/4882761.html
相关文章推荐
- Mybatis+Oracle进行数据的批量插入和更新
- 使用MyBatis单条和批量插入数据到Oracle的表中
- Oracle使用Mybatis实现批量插入或修改数据(Oracle)
- Mybatis中实现oracle的批量插入、更新
- Oracle使用Mybatis实现List批量插入数据
- Mybatis中实现oracle的批量插入、更新
- C#使用SqlDataAdapter 实现数据的批量插入和更新
- Mybatis中实现oracle的批量插入、更新
- oracle使用 merge 更新或插入数据
- Oracle使用Mybatis实现List批量插入数据
- oracle使用 merge 更新或插入数据
- Oracle使用Mybatis实现List批量插入数据
- mybatis-oracle批量插入数据的简单学习
- MyBatis中的批量插入、删除数据库数据(MySql和Oracle)
- oracle+mybatis 使用动态Sql当插入字段不确定的情况下实现批量insert
- oracle使用 merge 更新或插入数据(总结)
- Oracle中merge into的使用:该命令使用一条语句从一个或者多个数据源中完成对表的更新和插入数据.
- oracle使用 merge 更新或插入数据(总结)
- Mysql游标使用 批量插入或更新数据
- oracle+mybatis 使用动态Sql当插入字段不确定的情况下实现批量insert