一、controller层:
String empCodes=order.getRecommendEmployees(); 获取到前端传递过来的字符串以,形式隔开
String[] array = empCodes.split(","); 通过,分隔 以数组的形式保存
List<OrderAunt> list = new ArrayList<OrderAunt>();
for (int i = 0; i < array.length; i++) {
String empCode = array[i];
OrderAunt orderAunt = new OrderAunt();
orderAunt.setId(UUIDUtils.get16UUID());
orderAunt.setEmpCode(empCode);
orderAunt.setOrderCode(orderCode);
list.add(orderAunt);
}
orderService.insert(list);
二、service 层:
public int insert(List<OrderAunt> list) {
return orderMapper.insertAll(list);
}
三、mapper层:
//mapper层是采用注解的方式
@UpdateProvider(type = com.infohold.hm.domain.dyna.OrderDynaSqlProvider.class, method = "insertAll")
int insertAll(@Param("list") List<OrderAunt> list );
四、动态sql层:
public String insertAll(Map<String, List<OrderAunt>> map) {
List<OrderAunt> userRoles = (List<OrderAunt>) map.get("list");
StringBuilder sb = new StringBuilder();//是一个抽象类 实现了序列化
sb.append("INSERT ALL ");
MessageFormat mf = new MessageFormat(
"INTO HM_ORDER_AUNT (ID, ORDER_CODE,EMP_CODE)"
+ "VALUES (#'{'list[{0}].id,jdbcType=VARCHAR}, #'{'list[{0}].orderCode,jdbcType=VARCHAR},"
+ "#'{'list[{0}].empCode,jdbcType=VARCHAR})");
for (int i = 0; i < userRoles.size(); i++) {
sb.append(mf.format(new Object[] { i }));
}
sb.append(" SELECT 1 FROM dual ");
return sb.toString();
}
以上就是ssm框架的一个批量插入操作,其中有很多地方还是不太明白 先记录下来吧!