All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.zodiac.mybatisplus.injector.methods.InsertBatch Maven / Gradle / Ivy

There is a newer version: 1.6.8
Show newest version
package org.zodiac.mybatisplus.injector.methods;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.core.injector.AbstractMethod;
import com.baomidou.mybatisplus.core.metadata.TableFieldInfo;
import com.baomidou.mybatisplus.core.metadata.TableInfo;

import java.util.List;
import org.apache.ibatis.executor.keygen.Jdbc3KeyGenerator;
import org.apache.ibatis.executor.keygen.KeyGenerator;
import org.apache.ibatis.executor.keygen.NoKeyGenerator;
import org.apache.ibatis.mapping.MappedStatement;
import org.apache.ibatis.mapping.SqlSource;
import org.zodiac.mybatisplus.injector.MyBatisPlusMethod;

public class InsertBatch extends AbstractMethod {

    private static final long serialVersionUID = 4224687861411381402L;

    @Override
    public MappedStatement injectMappedStatement(Class mapperClass, Class modelClass, TableInfo table) {
        KeyGenerator keyGenerator = new NoKeyGenerator();
        StringBuilder fieldBuilder = new StringBuilder();
        StringBuilder placeholderBuilder = new StringBuilder();
        MyBatisPlusMethod sqlMethod = MyBatisPlusMethod.INSERT_BATCH_MYSQL;
        placeholderBuilder.append("\n\n");

        fieldBuilder.append("\n\n");
        String keyProperty = null;
        String keyColumn = null;
        if (table.getIdType() == IdType.AUTO) {
            /* 自增主键。 */
            keyGenerator = new Jdbc3KeyGenerator();
            keyProperty = table.getKeyProperty();
            keyColumn = table.getKeyColumn();
        } else {
            /* 用户输入自定义ID。 */
            fieldBuilder.append(table.getKeyColumn()).append(",");
            placeholderBuilder.append("#{item.").append(table.getKeyProperty()).append("},");
        }
        List fieldList = table.getFieldList();
        for (TableFieldInfo fieldInfo : fieldList) {
            fieldBuilder.append(fieldInfo.getColumn()).append(",");
            placeholderBuilder.append("#{item.").append(fieldInfo.getEl()).append("},");
        }
        fieldBuilder.append("\n");
        placeholderBuilder.append("\n");
        String sql = String.format(sqlMethod.getSql(), table.getTableName(), fieldBuilder.toString(),
            placeholderBuilder.toString());
        SqlSource sqlSource = languageDriver.createSqlSource(configuration, sql, modelClass);
        return this.addInsertMappedStatement(mapperClass, modelClass, sqlMethod.getMethod(), sqlSource, keyGenerator,
            keyProperty, keyColumn);
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy