通过 Mybatis 配置文件的方式 如何使用 JDBC 的批量插入接口

本贴最后更新于 770 天前,其中的信息可能已经斗转星移

JDBC 的 Statement 提供的又 addBatch 和 executeBatch 接口,通过 MyBatis 该如何调用此类接口,如 Spring 的 jdbcTemplate 就封装的又 batchUpdate 方法,MyBatis 呢?有没有通过配置文件的方式可调用批量插入接口的?
注:此处的批量不是在配置文件中用 for each 构建批量插入 SQL 的方式

  • MyBatis

    MyBatis 本是 Apache 软件基金会 的一个开源项目 iBatis,2010 年这个项目由 Apache 软件基金会迁移到了 Google code,并且改名为 MyBatis ,2013 年 11 月再次迁移到了 GitHub。

    158 引用 • 405 回帖 • 642 关注
  • JDBC
    16 引用 • 24 回帖
  • Q&A

    提问之前请先看《提问的智慧》,好的问题比好的答案更有价值。

    1897 引用 • 12117 回帖 • 559 关注

赞助商 我要投放

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • yangyujiao

    你是在逗我吗?
    想用 MyBatis 基本都是想要在 XML 中写 SQL 的,本身 SQL 是你自己写的,怎么可能通过一个配置来说批量不批量的问题。你 MySQL 中想要写个批量,还要啥配置支持吗?不是只要你的 SQL 写的没错就可以了吗?

    另外,虽然我没用过你说的这个 JDBC 的批量插入的东西,但不外乎就是以前的那种在 Java 中拼接 SQL。这种批量不是在一个循环中插入吗?就算不是循环,那你不得一个个 set 进去成为批量,然后一次性插入吗?况且你插入在真正执行的时候用的方式就是你在 MyBatis 中用的 foreach 那种插入方式,毕竟在 MySQL 中写 SQL 就是那样的。怎么写都脱离不了数据库中的方式啊。

    还有,JDBC 想要支持批量,是在配置中需要配置吗?如果要说是因为用了某某某插件就可以批量了,就可以用那个方法了,,,那你就当 MyBatis 本身就牛逼吧,不需要辅助。

    2 回复
  • juedi
    作者

    可能我没有表达清楚,是想问 MyBatis 有没有调用底层 JDBC 的 addBatch、executeBatch 的外层封装接口,而且是通过 MyBatis 的配置文件的方式调用

  • juedi
    作者

    摘自 MyBatis 官方文档

    • ExecutorType.SIMPLE:这个执行器类型不做特殊的事情。它为每个语句的执行创建一个新的预处理语句。
    • ExecutorType.REUSE:这个执行器类型会复用预处理语句。
    • ExecutorType.BATCH:这个执行器会批量执行所有更新语句,如果 SELECT 在它们中间执行,必要时请把它们区分开来以保证行为的易读性。

    MyBatis 的批量调用是在 session 级别,不方便交叉使用,不能单独指定某个 SQL,灵活性还是不如 jdbcTemplate

  • juedi
    作者

    我说的配置,就是值 XML 中的 SQL

  • Eddie
    捐赠者

    我觉得你不太清楚 addbath() 跟 executeBath() 到底做了啥。

请输入回帖内容 ...