| package com.xzx.gc.batch;  | 
|   | 
| import org.apache.ibatis.mapping.MappedStatement;  | 
| import tk.mybatis.mapper.entity.EntityColumn;  | 
| import tk.mybatis.mapper.mapperhelper.EntityHelper;  | 
| import tk.mybatis.mapper.mapperhelper.MapperHelper;  | 
| import tk.mybatis.mapper.mapperhelper.SqlHelper;  | 
| import tk.mybatis.mapper.provider.ExampleProvider;  | 
|   | 
| import java.util.Set;  | 
|   | 
| /**  | 
|  * 批量更新的SqlProvider  | 
|  * @author sunchangtan  | 
|  */  | 
|   | 
| public class BatchInsertExampleProvider extends ExampleProvider {  | 
|   | 
|     public BatchInsertExampleProvider(Class<?> mapperClass, MapperHelper mapperHelper) {  | 
|         super(mapperClass, mapperHelper);  | 
|     }  | 
|   | 
|   | 
|     /**  | 
|      * 拼update sql, 使用case when方式,id为主键  | 
|      *  | 
|      * @param ms  | 
|      * @return  | 
|      */  | 
|     public String insertBatchByPrimaryKeySelective(MappedStatement ms) {  | 
|         final Class<?> entityClass = getEntityClass(ms);  | 
|         //开始拼sql  | 
|         StringBuilder sql = new StringBuilder();  | 
|         sql.append(SqlHelper.insertIntoTable(entityClass, tableName(entityClass), "list[0]"));  | 
|         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) {  | 
|                 sql.append(column.getColumnHolder("record") + ",");  | 
|         }  | 
|         sql.append("</trim>");  | 
|         sql.append("</foreach>");  | 
|   | 
|         return sql.toString();  | 
|     }  | 
|   | 
|   | 
| }  | 
|   |