Mybatis批量插入数据返回主键

响应效果(id为主键)

{
    "data": [
        {"studentName": "张三","classNo": "一班","id": 111},
        {"studentName": "李四","classNo": "二班","id": 112},
        {"studentName": "王五","classNo": "一班","id": 113}
    ]
}

控制层:

        @PostMapping("/test")
	@ResponseBody
	public Map test(@RequestBody String data) {
		Map resultMap = new HashMap();
                //非空校验
		if (!checkParams.checkString(data)) {
			resultMap.put("code", "1");
			resultMap.put("msg", "参数为空。");
			return resultMap;
		}
                //json转List>
		JSONObject json= new JSONObject(data);
		String dataString = json.get("data").toString();
		com.google.gson.Gson gson = new Gson();
				List> list = gson.fromJson(dataString, new      com.google.common.reflect.TypeToken>>() {
				}.getType());
                //请求接口
		resultMap=registerService.test(list);
		return resultMap;
	}

接口:

        public Map test(List> data);

实现类:

        @Override
	public Map test(List>  data) {
		Map resultMap = new HashMap();
		registerMapper.test( data);
		resultMap.put("data",data);
		return resultMap;
	}

持久层:

        public void test(List> list);

statement:

        
	
		INSERT INTO student_info(student_name,class_no)VALUES
		
			(
			#{item.studentName},
			#{item.classNo}
			)
		
	

请求方式:

http://localhost/xxx/test

请求参数:

{
    "data": [
        {"studentName": "张三","classNo": "一班"},
        {"studentName": "李四","classNo": "二班"},
        {"studentName": "王五","classNo": "一班"}
    ]
}

注意事项

statement中keyProperty的赋值是可以自定义的,如果将keyProperty的值改为key,即改成如下:

        
	
		INSERT INTO student_info(student_name,class_no)VALUES
		
			(
			#{item.studentName},
			#{item.classNo}
			)
		
	

则响应效果(key为主键)如下

{
    "data": [
        {"studentName": "张三","classNo": "一班","key": 111},
        {"studentName": "李四","classNo": "二班","key": 112},
        {"studentName": "王五","classNo": "一班","key": 113}
    ]
}

你可能感兴趣的:(Mybatis,MySQL)