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(""); sql.append(""); //获取全部列 Set columnList = EntityHelper.getColumns(entityClass); //当某个列有主键策略时,不需要考虑他的属性是否为空,因为如果为空,一定会根据主键策略给他生成一个值 for (EntityColumn column : columnList) { sql.append(column.getColumnHolder("record") + ","); } sql.append(""); sql.append(""); return sql.toString(); } }