Mybatis批量插入数据返回主键

响应效果(id为主键)

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

控制层:

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

接口:

        public Map<String, Object> test(List<Map<String,Object>> data);

实现类:

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

持久层:

        public void test(List<Map<String,Object>> list);

statement:

        <!-- =========================批量插入返回主键示例======================== -->
	<insert id="test" parameterType="list" useGeneratedKeys="true" keyProperty="id" >
		INSERT INTO student_info(student_name,class_no)VALUES
		<foreach collection="list" item="item" separator=",">
			(
			#{item.studentName},
			#{item.classNo}
			)
		</foreach>
	</insert>

请求方式:

http://localhost/xxx/test

请求参数:

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

注意事项

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

        <!-- =========================批量插入返回主键示例======================== -->
	<insert id="test" parameterType="list" useGeneratedKeys="true" keyProperty="key" >
		INSERT INTO student_info(student_name,class_no)VALUES
		<foreach collection="list" item="item" separator=",">
			(
			#{item.studentName},
			#{item.classNo}
			)
		</foreach>
	</insert>

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

{
    "data": [
        {"studentName": "张三","classNo": "一班","key": 111},
        {"studentName": "李四","classNo": "二班","key": 112},
        {"studentName": "王五","classNo": "一班","key": 113}
    ]
}
发布了97 篇原创文章 · 获赞 87 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/qq_39706570/article/details/104038592