Mybatis批量插入資料返回主鍵的實現
阿新 • • 發佈:2020-01-22
響應效果(id為主鍵):
{ "data": [ {"studentName": "張三","classNo": "一班","id": 111},{"studentName": "李四","classNo": "二班","id": 112},{"studentName": "王五","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>> data) { Map<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": "一班"},"classNo": "二班"},"classNo": "一班"} ] }
注意事項:
statement中keyProperty的賦值是可以自定義的,如果將keyProperty的值改為key,即改成如下:
<!-- =========================批量插入返回主鍵示例======================== --> <insert id="test" parameterType="list" useGeneratedKeys="true" keyProperty="key" > INSERT INTO student_info(student_name,#{item.classNo} ) </foreach> </insert>
則響應效果(key為主鍵)如下:
{ "data": [ {"studentName": "張三","key": 111},"key": 112},"key": 113} ] }
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。