java - 使用 List 更新 SQL 数据库 - Java 和 MyBatis

标签 java sql performance oop mybatis

MyBatis 中可以插入列表吗?

这是Java代码:

@Override
    public void createSubjectPrivileges(final List<SubjectPrivilegesFormDTO> subjectPrivilegesFormDTOList) {
        this.auditingSqlSession.update("createSubjectPrivileges",3,subjectPrivilegesFormDTOList);
    }

如果可能的话,MyBatis 代码是什么?

<insert id="createSubjectPrivileges" parameterType="?">
        insert into x (
        a,
        b,
        c
        ) values (
        #{d, jdbcType=NUMERIC},
        #{e, jdbcType=NUMERIC},
        #{f, jdbcType=NUMERIC}
        )
    </insert>

我总是可以在 Java 中迭代列表并每次插入一个列表,但从我的角度来看,这在性能方面并不是很好。

提前致谢。

最佳答案

您可以使用动态sql生成facilities在 mybatis 中生成将插入列表的语句,但这不是一个好方法。

在java中进行循环并使用BatchExecutorrecommended进行批量操作的方式。批处理执行器使用 JDBC 批处理,消除了与数据库的多次往返。另一个好处是使用准备好的语句,与包含多个插入的大型生成语句相比,这会使语句更快。

关于java - 使用 List 更新 SQL 数据库 - Java 和 MyBatis,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31156505/

相关文章:

MySQL - 每个表都应该包含它自己的 id/主列吗?

java - 如何在 StringBuilder 中追加星号 * ?

python - 3000 keyhash 的 Redis 值获取大约需要 10 秒(python 3.5)

c++ - 为什么将 std::bind 与 lambda 一起使用时生成的对象如此之大?

Java util 首选项构造函数

java - 如何使用 JMeter 记录 JNLP/Java Web Start 应用程序

java - 不明白\n

amazon-web-services - 使用适用于 Java API 的 AWS 开发工具包时出现 SSLHandshakeException

mysql - SQL 数据库迁移到 Salesforce/另一个 CRM(一次性导入)

performance - 带有 "collapse()"的用于嵌套 for 循环的 OpenMP 在没有时性能更差