Mybatis批量插入数据返回主键的实现
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
Mybatis批量插入数据返回主键的实现 Mybatis是当前最流行的持久层框架之一,它提供了强大的批量插入功能,但是在批量插入数据时如何返回主键是一个常见的问题本文将详细介绍Mybatis批量插入数据返回主键的实现。 在Mybatis中,批量插入数据可以通过使用foreach语句来实现,而返回主键可以通过使用useGeneratedKeys和keyProperty两个属性来实现。下面是一个示例代码: 在持久层的Mapper文件中,我们需要定义一个批量插入的语句: ``` <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> ``` 在上面的语句中,我们使用了useGeneratedKeys属性来指定该语句是否返回主键,而keyProperty属性指定了返回的主键的名称。在这个示例中,我们将返回的主键命名为"id"。 在service层中,我们可以使用Mapper来执行批量插入语句: ``` @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; } ``` 在控制层中,我们可以使用POST请求来调用service层的方法: ``` @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; } ``` 在上面的代码中,我们首先对请求参数进行非空校验,然后将json格式的参数转换为List<Map<String,Object>>,最后调用service层的方法来执行批量插入语句。 在请求方可以使用POST请求来调用控制层的方法,并传入批量插入的数据: ``` 请求方式:http://localhost/xxx/test 请求参数:{ "data": [ {"studentName": "张三","classNo": "一班"}, {"studentName": "李四","classNo": "二班"}, {"studentName": "王五","classNo": "一班"} ] } ``` 在这个示例中,我们使用了Mybatis的批量插入功能来插入多个学生信息,并返回每个学生的主键。在实际应用中,这种方式可以用于批量插入大量数据,并返回每个数据的主键,以便后续的处理。 需要注意的是,在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"。
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![jar](https://img-home.csdnimg.cn/images/20210720083455.png)
![jar](https://img-home.csdnimg.cn/images/20210720083455.png)
![thumb](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
![avatar](https://profile-avatar.csdnimg.cn/default.jpg!1)
- 粉丝: 5
- 资源: 931
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
最新资源
- 印度女性受侵害数据集.zip
- Web开发中的Django框架:核心特点与实践应用Django 是一个高效、开源的 Web 应用框架,它是用 Python 编写的,旨在简化 Web 开发的复杂性,提供高效的开发环境,使开发人员能够专
- 页面标题检测27-YOLO(v5至v9)、COCO、CreateML、Darknet、Paligemma、TFRecord、VOC数据集合集.rar
- 万商网企业分类信息网整站打包 包运营 内有安装说明
- 毕业设计:嵌入式软件开发技术与智慧城市建设思路示例,不是完整毕设,仅供参考! 随着科技的迅猛发展和信息技术的日新月异,嵌入式软件开发技术已经逐渐崭露头角,成为信息技术领域中不可或缺的重要组成部分
- 动态圣诞树(带祝福语版本)python原文件源码一键启动
- 新建 DOC 文档 (2).doc
- 汇编语言教程汇编语言(Assembly Language)是一种低级语言,与计算机硬件紧密相关 它以助记符(mnemonics)表示指令,与机器语言一一对应,是人类与硬件之间沟通的重要桥梁 学习汇编语
- flutter3.3.10 dart2.18.6
- 滴滴出行行程单模板2024
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)