這個困擾我一整天東西,終於解決了。
首先是mybatis中的批量新增sql語句。
注意:這里我給的是我需要新增的字段,你們改成你們需要的字段。
1 <insert id="insertBatch" > 2 insert into hm_authorization (ID,ROLE_CODE,RES_TYPE_CODE,RES_CODE) 3 values 4 <foreach collection="list" item="item" index="index" separator=","> 5 (#{item.id},#{item.roleCode},#{item.resTypeCode},#{item.resCode}) 6 </foreach> 7 </insert>
然后直接上Controller層接口。
注意:這里我的類上寫的注解是@RestController,如果你們寫的是@Controller,別忘了在方法上加@ResponseBody。
解釋一下該代碼:List泛型里邊放你們自己對象,JSON.parseArray是fastjson包中的方法。附上jar包的maven引用。
這里我的方法可能有些笨,不過實現最重要。一開始我也嘗試用list接收,但是接收不了。百度出來各種方法感覺都是閑扯淡。反正我用不了。
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.58</version> </dependency>
1 @PostMapping(value = "addbatch") 2 public ResultVo addBatch(@RequestParam String data){ 3 System.out.println(data); 4 String strlist = data; 5 List<AuthVo> array = JSON.parseArray(strlist,AuthVo.class); 6 7 return authorizationService.insertBatch(array); 8 }
然后是前端的處理問題
1 //前端我是用的表格,選中直接獲取了數組。如果你們不能直接獲取數組, 2 //先把數據進行遍歷為一個數組。至於怎么遍歷,百度吧。 3 //確定你的數據是數組的格式后,把數據轉為json格式。就行了。 4 //監聽表格復選框選擇 5 $("#add").on('click', function () { 6 //table.on('checkbox(useruv)', function(obj) { 7 var checkStatus = table.checkStatus('LAY_table_user'); 8 var obj = checkStatus.data; 9 var info = JSON.stringify(obj); 10 console.log(info); 11 $.ajax({ 12 type: "post", 13 url: "addbatch", 14 data: "data="+info, 15 dataType: "json", 16 success: function (d) { 17 if (d.code == 1) { 18 layer.msg("新增成功", { 19 icon: 6 20 }); 21 } else { 22 layer.msg("新增失敗", { 23 icon: 5 24 }); 25 } 26 } 27 })