加入tkmybatis,進行批量插入


首先模仿接口insertList接口:

/**
 * Created by kun.zuo
 * Created by time 2020/12/29
 * Vsrsion 1.0
 */
public class SpecialBatchProvider  extends MapperTemplate {

    public SpecialBatchProvider(Class mapperClass, MapperHelper mapperHelper) {
        super(mapperClass, mapperHelper);
    }

    public String batchInseetList(MappedStatement ms) {
        Class entityClass = getEntityClass(ms);
        //開始拼sql
        StringBuilder sql = new StringBuilder();
        sql.append(SqlHelper.insertIntoTable(entityClass, tableName(entityClass)));
        sql.append(SqlHelper.insertColumns(entityClass, false, false, false));
        sql.append(" VALUES ");
        sql.append("<foreach collection=\"list\" item=\"record\" separator=\",\" >");
        sql.append("<trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">");
        //獲取全部列
        Set<EntityColumn> columnList = EntityHelper.getColumns(entityClass);
        //當某個列有主鍵策略時,不需要考慮他的屬性是否為空,因為如果為空,一定會根據主鍵策略給他生成一個值
        for (EntityColumn column : columnList) {
            if (column.isInsertable()) {
                //出現類型com.microsoft.sqlserver.jdbc.SQLServerException: 操作數類型沖突: varbinary
                if(column.getJavaType() == Double.class){
                    String record = column.getColumnHolder("record");
                    record = record.substring(0,record.length()-1)+",jdbcType=DECIMAL"+"}";
                    sql.append(record+ ",");
                }else {
                    sql.append(column.getColumnHolder("record") + ",");
                }
            }
        }
        sql.append("</trim>");
        sql.append("</foreach>");
        return sql.toString();
    }
}

 

/**
 * Created by kun.zuo
 * Created by time 2020/12/29
 * Vsrsion 1.0
 */
@RegisterMapper
public interface SpecialBatchMapper<T> {

    /**
     * 批量插入數據庫,所有字段都插入,包括主鍵
     *
     * @return
     */
    @Options(useGeneratedKeys = true, keyProperty = "id")
    @InsertProvider(type = SpecialBatchProvider.class, method = "batchInseetList")
    int batchInseetList(List<T> recordList);
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM