Java mybatis批量插入

这篇博客介绍了在实际开发中如何使用MyBatis-Plus进行批量插入和更新操作。通过XML配置,展示了如何利用`<foreach>`标签来遍历集合并插入多个记录到数据库。Mapper接口定义了一个无返回值的`insertAmzResult`方法,接收一个`SearchResult`对象列表作为参数。这种方法提高了数据操作的效率。
摘要由CSDN通过智能技术生成

实际开发中肯定会遇到批量插入,批量更新等常用的sql操作,有的使用mybatis-plus以至于当自己实际写的时候早已忘记

话不多说 直接上代码

xml代码

<insert id="insertAmazonResult" parameterType="list">
    insert into tab_search_result (searchid,keywordid,amz_url,amz_product_name,amz_product_price,
    amz_asin,amz_product_style,amz_product_page,amz_product_index)
    values
    <foreach collection="list" item="item" index="index" separator=",">
        (
        #{item.searchId},
        #{item.keyWordId},
        #{item.amzUrl},
        #{item.amzProductName},
        #{item.amzProductPrice},
        #{item.amzAsin},
        #{item.amzProductStyle},
        #{item.amzProductPage},
        #{item.amzProductIndex}
        )
    </foreach>
</insert>

mapper就是很普通的mapper

void insertAmzResult(List<SearchResult> resultsList);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是Java实现Mybatis批量插入数据到Oracle的两种方法: 引用:Java实现mybatis批量插入数据到Oracle[^1]。 1.使用foreach标签批量插入数据。在Mybatis的mapper.xml中,可以使用foreach标签循环插入数据,如下所示: ```xml <insert id="batchInsert" parameterType="java.util.List"> INSERT INTO user(username, address, remark, age, create_time) VALUES <foreach collection="list" item="item" separator=","> (#{item.username}, #{item.address}, #{item.remark}, #{item.age}, sysdate) </foreach> </insert> ``` 注意,在这个例子中,我们使用了Oracle特有的sysdate方法来插入当前时间。 在Java代码中,使用SqlSession的批量操作方法,即可完成批量插入数据。 ```java List<User> userList = new ArrayList<>(); // 填充userList... try (SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH)) { UserMapper userMapper = sqlSession.getMapper(UserMapper.class); userMapper.batchInsert(userList); sqlSession.commit(); } catch (Exception e) { logger.error("batchInsert error", e); } ``` 2.使用Oracle JDBC的批量插入API。使用该API可以将多条SQL语句作为一个批量发送到Oracle服务器端执行,可以提高插入数据的效率。具体实现如下: ```java public void batchInsert(List<User> userList) { String sql = "INSERT INTO user(username, address, remark, age, create_time) VALUES(?,?,?,?,sysdate)"; try (Connection conn = dataSource.getConnection(); PreparedStatement stmt = conn.prepareStatement(sql)) { conn.setAutoCommit(false); for (User user : userList) { stmt.setString(1, user.getUsername()); stmt.setString(2, user.getAddress()); stmt.setString(3, user.getRemark()); stmt.setInt(4, user.getAge()); stmt.addBatch(); } stmt.executeBatch(); conn.commit(); } catch (Exception e) { logger.error("batchInsert error", e); } } ``` 注意,在这个例子中,我们使用了Oracle特有的sysdate方法来插入当前时间。另外,需要注意的是,使用该API的时候,需要手动开启事务并关闭自动提交。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值