ssm批量新增修改操作

需要给项目添加批量处理操作,之前没有做过ssm框架的批量,在这个过程中遇到好几个坑,记录下来,避免下次再犯错误。

可以把数组序列化成Json字符串提交,后台springmvc里用@ RequestBody String 方式接收,然后把这个接收到的json串用json工具转换为数组,这样就解决了springmvc不能绑定对象数组的问题了。

将对象数组用{“list”:JSON.stringify(array)}绑定到后台,后台用@RequestBody String configs接收,接收的是json数据,然后用jackson把configs转为数组List configList。

var configList= JSON.stringify([    
            {configName: "sgs-demo", configId: "1"},    
            {configName: "sgs-demo-1", configId: "2"}    
        ]);  
  
        $.ajax({    
            type: "post",   
            url: "doRedistribution.do",   
            data:configList ,    
            contentType: "application/json; charset=utf-8",    
            dataType: "json",    
            success: function (response, ifo) {    
                alert("success");    
            }, error: function () {    
                alert("error");    
            }    
        })   

dataType:‘json’,//预期的服务器响应的数据类型。

contentType: “application/json; charset=utf-8”,//发送数据到服务器时所使用的内容类型。默认是:“application/x-www-form-urlencoded”。

如果不加contentType,configs接收的数据为类似%7B%22id%22%3A243%2C%name%22%3A4%2C%22age%22%3A1048%2C%22格式,json转换会报错,

controller层

@RequestMapping(value="doRedistribution.do")
      @ResponseBody
      public Map doRedistribution(HttpServletRequest  request,RedirectAttributes attr,@RequestBody String CustAdminuser){
                  Map resultMap = new HashMap<>();
                  try{
                        Gson gson = new Gson();
                        List list =  gson.fromJson(CustAdminuser, new TypeToken>()  {}.getType());
                       //这个地方特别注意,将json转换成 list
                    for(int i = 0;i

批量在新增mapper.xml



        insert into CustAdminuser
          (CustAdminuserId,custid,adminuserID,assigner,assignedTime,createTime,cause,history,deptid,isLocked,View,picked,Commed,interviewed)
    values
    
          (#{item.CustAdminuserId},#{item.custid},#{item.adminuserID},#{item.assigner},now(),now(),#{item.cause},#{item.history},#{item.deptid},#{item.isLocked},#{item.View},#{item.picked},#{item.Commed},#{item.interviewed})
    

批量在修改mapper.xml


        update CustAdminuser set
        history='1'
        where 1 = 1  and CustAdminuserId in
  
                          #{item.CustAdminuserId}
  
  

这个地方写了一个SQL语句 条件 放在了in中 (update set xx=? where id in(?,?,?,?,?,?))
写成多个SQL出现事务问题,解决不了只能用上边的方法。

当同时执行多条SQL语句的时候,需要在Mybatis配置文件中进行allowMultiQueries配置:

url  = jdbc:mysql://xxxxxxx:3306/fg_test?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true

你可能感兴趣的:(SSM)