Home  >  Article  >  Java  >  How to batch insert data in MyBatis

How to batch insert data in MyBatis

PHPz
PHPzOriginal
2024-02-23 18:00:071232browse

How to batch insert data in MyBatis

How to implement the batch adding function in MyBatis requires specific code examples

In actual development, we often encounter situations where we need to add data in batches, such as Batch insert multiple records into the database. How to implement the batch addition function when using MyBatis, an excellent persistence layer framework? The following will introduce how to implement the batch addition function in MyBatis, and attach specific code examples.

First, we need to write the corresponding SQL statement in the Mapper.xml file and use INSERT INTO...VALUES(...) to insert multiple records at one time. Then, define a corresponding method in the Mapper interface for calling SQL statements.

Next, we need to write a method to add data in batches in Java code. Here we take MyBatis's BatchExecutor as an example. The specific code is as follows:

// 定义一个批量插入方法
public void batchInsert(List<Data> dataList) {
    SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false);
    try {
        int batchSize = 1000; // 每次批量提交的记录数
        int count = 0;
        for (Data data : dataList) {
            sqlSession.insert("com.example.mapper.DataMapper.insert", data);
            if (++count % batchSize == 0) {
                sqlSession.commit(); // 每累积batchSize条记录就提交一次
                sqlSession.clearCache();
            }
        }
        sqlSession.commit(); // 提交剩余的记录
    } finally {
        sqlSession.close();
    }
}

In the above code, we open a batch SqlSession, then traverse the incoming data list, and use the insert method to insert each piece of data. And commit the transaction when it accumulates to a certain amount. Finally, remember to commit the remaining records and close the SqlSession.

The corresponding insert statement needs to be defined in the Mapper.xml file. The sample code is as follows:

<insert id="insert" parameterType="com.example.model.Data">
    INSERT INTO data_table (column1, column2, column3) VALUES (#{field1}, #{field2}, #{field3})
</insert>

The data_table here is the table name in the database, and column1, column2, and column3 are the fields in the table. , field1, field2, field3 are the corresponding fields of the incoming entity class Data.

Finally, when using the batch add function, you only need to call the batchInsert method and pass in the list of data to be added to implement the batch insert function.

To sum up, the batch addition function in MyBatis can be realized by defining the corresponding SQL statement in the Mapper.xml file, then writing the batch method in the Java code, and finally calling the method. Hope the above content is helpful to you.

The above is the detailed content of How to batch insert data in MyBatis. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn