记一次for循环批量插入数据的SSM框架案例


一、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框架的一个批量插入操作,其中有很多地方还是不太明白 先记录下来吧!


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM