当使用Mybatis-plus的ASSIGN_ID主键生成策略时,出现两条数据id相同,导致添加不进数据库的问题,根据ASSIGN_ID生成策略原理,一毫秒的时间可以生成4096个不同主键(数据来源),实际使用上基本不可能出现重复id,但是却出现了,下面这个回答可能会解决你的问题。
根据我的实验结果,我发现使用同一个对象当做save方法的形参[xxxService.save(对象)] 进行保存的时候会出现主键相同的情况
Iterator iterator = setMealDishes.iterator();
//下面是该重复使用的对象
SetMealDish setmealDish = new SetMealDish();
while (iterator.hasNext()) {
LinkedHashMap next = (LinkedHashMap)iterator.next();
String dishId = (String)next.get("dishId");
setmealDish.setDishId(new Long(dishId));
setmealDish.setSetmealId(oneOfSetMeal.getId());
setmealDish.setName((String) next.get("name"));
setmealDish.setPrice((Integer) next.get("price"));
setmealDish.setCopies((Integer) next.get("copies"));
//可以看到,本质上是一个对象,只是变换变量的值,然后save时生成的主键相同
setMealDishService.save(setmealDish);
}
其实很简单,只需要将变量定义在循环体内就行,这样每轮保存的对象就不一样了,生成的id也就不同
Iterator iterator = setMealDishes.iterator();
while (iterator.hasNext()) {
//将对象定义在循环体内
SetMealDish setmealDish = new SetMealDish();
LinkedHashMap next = (LinkedHashMap)iterator.next();
String dishId = (String)next.get("dishId");
setmealDish.setDishId(new Long(dishId));
setmealDish.setSetmealId(oneOfSetMeal.getId());
setmealDish.setName((String) next.get("name"));
setmealDish.setPrice((Integer) next.get("price"));
setmealDish.setCopies((Integer) next.get("copies"));
setMealDishService.save(setmealDish);
}
1 什么时候需要使用switch case?说到switch case我们通常都会想到 if else,相较于if else支持任何数据类型、表达式和变量,而switch case只是支...
WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。在 WebSocket API 中,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。现在,很多网站为了实现推送技术,所用
在大数据分析中,数据的挖掘技术是比较重要的,毕竟数据挖掘是获取数据来源的方式,我们都知道大数据分析是需要数据的,没有数据何谈分析?所以我们就需要重视大数据中的挖掘技术,下面我们就在这篇文章中给大家讲述一下大数据分析中的挖掘技术。首先我们给大家说一下大数据分析技术,大数据分析技术就是改进已有数据挖掘和机器学习技术,同时开发数据网络挖掘、特异群组挖掘、图挖掘等新型数据挖...
原帖地址:http://www.itpub.net/thread-1712774-1-1.htmloracle 9i 下的Group By 后面不加order by ,以前都有默认排序的,现在换成11g后就没有排序了,请问会是什么原因?除了一个一个sql语句加order by外,还有什么方法解决呢?10g开始就是hashgroup by了啊,要排序,必须最后加orderby,被害了吧,除非
以前我写了一篇《[VC6] 检查MMX和SSE系列指令集的支持级别(最高SSE4.2)》(http://www.cnblogs.com/zyl910/archive/2012/03/01/checksimd.html)。现在发现该方法存在两点缺陷——1.不支持64位,因为VC的64位程序不支持内嵌汇编;2.没有区分硬件支持与操作系统支持。 怎么解决这两点缺陷呢? 对于第1点,可以利用I...
As little children we would dream of Christmas morn Of all the gifts and toys we knew wed find But we never realized a baby born one blessed night Gave us the greatest gift of our lives
写在前面,一路安装走来,遇到很多TensorFlow、cuda、cudnn版本不兼容匹配的,后来,我找到了NVIDIA官方系统配置 ,可以按照这个来配置,避免多走弯路。环境: - ubuntu 16.04 64bit - 显卡:NVIDIA Tesla k40m + 集成显卡 注:在NVIDIA DriverDownloads查找的最新为384.66,系统配置如下:
光标的样式是由style中的cursor来控制的,cursor有auto、default、pointer、text、wait、help6种类型。为了提升用户体验,不仅仅是在文本上添加一个点击事件就完了,还要友好的提示鼠标悬停在哪一项上,首先鼠标悬浮在文本区域时光标要。相信当家在写代码的过程中,文本的点击事件是常有的吧,如历史搜索记录、页面跳转等。
论文:YOLO9000:Better, Faster, StrongerAbstract\quad们介绍YOLO9000,一个最先进的,实时目标检测系统,可以检测超过9000个目标类别。首先,我们提出对YOLO检测方法的各种改进方法,包括新颖的和从以前的工作中得出的。改进的模型YOLOv2在如PASCAL VOC和COCO标准检测任务是最先进的。使用一种新颖的多尺度训练方法,相同的YO...
Delphi虽然是一个相当棒的RAD工具,但是难免也有小的瑕疵。遇到这种情况我们往往会找到Delphi/Source中的源代码进行修改,把这个源代码加入我们的Application,重新编译一下可执行程序就解决了这些小虫子。 但是如果我们要发布的是应用程序是“Build with runtime packages”(就是说,要连同该应用用到的BPL一起发布才能正常运行应用程序),我
最近看到群里看到一个女生,讲述了她从开始选择Android,经过非常努力的学习和挣扎,然而最后面对当前的环境却不得不放弃。看完以后真的非常替她感觉惋惜,如果早几年入行可能结果会比现在好很多,但可惜,这就是现实。这是一个做精品的时代了,不是当年出个产品就能拉投资骗点击的时代了。精品需要的是更专业的人才,也就是对APP开发人员的素质要求会更高,这个市场会回归一个正常的节奏,拿多少钱就是看能力,看产品。分享一波简介的面试题目腾讯—什么是对称加密,什么是非对称加密,公钥与私钥属于对称加密吗面试官: .
其实抓ajax异步内容的页面和抓普通的页面区别不大。ajax只不过是做了一次异步的http请求,只要使用firebug类似的工具,找到请求的后端服务url和传值的参数,然后对该url传递参数进行抓取即可。利用Firebug的网络工具 如果抓去的是页面,则内容中没有...