1.先配置 sql 注入器 ,新建一个 BatchSqlInjector 类继承 DefaultSqlInjector ;
public class BatchSqlInjector extends DefaultSqlInjector {
@Override
public List getMethodList(Class> mapperClass) {
List methodList = super.getMethodList(mapperClass);
// 可以排除部分插入的字段,直接采用数据库默认值
methodList.add(new InsertBatchSomeColumn());
return methodList;
}
}
2.向spring容器中注入该bean
@Bean
public BatchSqlInjector batchSqlInjector () {
return new BatchSqlInjector();
}
3.新增一个 mapper(dao) 文件,继承原 BaseMapper 用于拓展原先的基类,
@SqlParser(filter=true) public interface BatchOrderItemDAOextends BaseMapper { // 批量导入方法 int insertBatchSomeColumn(List entityList); }
4.使用方法
public Integer insertBatchSomeColumn(ListorderItemDTOS) { List orderItemPOS = BeanUtil.copyToList(orderItemDTOS, OrderItemPO.class); return getBaseMapper().insertBatchSomeColumn(orderItemPOS); }
5.上面的配置为整表 - 全字段的批量导入,需求:排除部分字段不进行导入。
写法:
methodList.add(new InsertBatchSomeColumn(i ->
!i.getColumn().equals("xx_field")
&& !i.getColumn().equals("xx_field")
);



