記一次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