欢迎访问优讯网!
您当前的位置:首页 > 爱编程

Mybatis批量插入数据返回主键的实现

时间:2020-01-21 08:21:40  来源:优讯网  作者:小卡司  浏览次数:
这篇文章主要介绍了Mybatis批量插入数据返回主键的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

响应效果(id为主键):

 
1
2
3
4
5
6
7
{
  "data": [
    {"studentName": "张三","classNo": "一班","id": 111},
    {"studentName": "李四","classNo": "二班","id": 112},
    {"studentName": "王五","classNo": "一班","id": 113}
  ]
}

控制层:

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
   @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;
}

接口:

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

实现类:

 
1
2
3
4
5
6
7
   @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;
}

持久层:

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

statement:

 
1
2
3
4
5
6
7
8
9
10
   <!-- =========================批量插入返回主键示例======================== -->
<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

请求参数:

 
1
2
3
4
5
6
7
{
  "data": [
    {"studentName": "张三","classNo": "一班"},
    {"studentName": "李四","classNo": "二班"},
    {"studentName": "王五","classNo": "一班"}
  ]
}

注意事项:

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

 
1
2
3
4
5
6
7
8
9
10
   <!-- =========================批量插入返回主键示例======================== -->
<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为主键)如下:

 
1
2
3
4
5
6
7
{
  "data": [
    {"studentName": "张三","classNo": "一班","key": 111},
    {"studentName": "李四","classNo": "二班","key": 112},
    {"studentName": "王五","classNo": "一班","key": 113}
  ]
}

以上就是本文的全部内容,希望对大家的学习有所帮助

来顶一下
返回首页
返回首页

原文链接:https://www.jb51.net/article/178957.htm


推荐资讯
如何下载旧版centos iso镜像 如何下载迷你mini版的centos镜像
如何下载旧版centos i
计算机的正确使用姿势 电脑痴如何正确的使用电脑
计算机的正确使用姿势
好用的后台管理的前端框架模版H-ui H-ui框架模版分享
好用的后台管理的前端
微信电脑多开方法 无需辅助电脑版微信双开方法分享
微信电脑多开方法 无
相关文章
栏目更新
栏目热门