Mybatis插入记录并返回MySQL自增主键
mapper
Integer insertConfigAndGetId(CrawlerConfig config);
xml
<insert id="insertConfigAndGetId" parameterType="com.suning.epp.fmasosadmin.dmo.CrawlerConfig">
<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
select LAST_INSERT_ID() as id
</selectKey>
insert into
T_CRAWLER_CONFIG(START_URL,PROCESSOR,PIPELINE_NAME,THREAD_NAME,RETRY_TIMES,SLEEP_TIME,CHARSET,HEADERS)
values
(#{startUrl},#{processor},#{pipelineName},#{threadNum},#{retryTimes},#{sleepTime},#{charset},#{headers})
</insert>
参数说明:
resultType:返回的主键类型
order:这可以被设置为 BEFORE 或 AFTER。如果设置为 BEFORE,那么它会首先选择主键,设置 keyProperty 然后执行插入语句。
如果设置为 AFTER,那么先执行插入语句,然后执行 selectKey 元素 。
keyProperty:selectKey 语句结果应该被设置的目标属性(对应参数中的主键的属性名)
注意:
取返回的主键名不能用
Integer cid = crawlConfigMapper.insertConfigAndGetId(config);
这样取到的值是插入影响的条数,而不是刚插入记录的主键值!!!
刚插入记录的主键值从刚插入记录的实体参数中取:
crawlConfigMapper.insertConfigAndGetId(config);
// 刚保存记录的主键值
Integer cid = config.getId();
Mybatis插入记录并返回MySQL自增主键的更多相关文章
- mybatis的执行流程 #{}和${} Mysql自增主键返回 resultMap 一对多 多对一配置
n Mybatis配置 全局配置文件SqlMapConfig.xml,配置了Mybatis的运行环境等信息. Mapper.xml文件即Sql映射文件,文件中配置了操作数据库的Sql语句.此文件需要在 ...
- 关于MySQL自增主键的几点问题(上)
前段时间遇到一个InnoDB表自增锁导致的问题,最近刚好有一个同行网友也问到自增锁的疑问,所以抽空系统的总结一下,这两个问题下篇会有阐述. 1. 划分三种插入类型 这里区分一下几种插入数据行的类型,便 ...
- mysql自增主键字段重排
不带外键模式的 mysql 自增主键字段重排 1.备份表结构 create table table_bak like table_name; 2.备份表数据 insert into table_bak ...
- MyBatis插入记录时返回主键id的方法
有时候插入记录之后需要使用到插入记录的主键,通常是再查询一次来获取主键,但是MyBatis插入记录时可以设置成返回主键id,简化操作,方法大致有两种. 对应实体类: public class User ...
- mybatis 添加事物后 无法获取自增主键的问题
检查代码后没发现mapper文件设置自增主键返回的问题,后来检查到,关闭事务后,执行完是可以获取返回的主键的, 我在mysql的客户端里关闭自动提交,发现使用select last_insert_id ...
- Mysql自增主键ID重新排序方法详解
Mysql数据库表的自增主键ID号乱了,需要重新排列. 原理:删除原有的自增ID,重新建立新的自增ID. 1,删除原有主键: ALTER TABLE `table_name` DROP `id`; 2 ...
- 关于mysql自增主键
对于mysql表(其他数据库没测试过) 如果定义了自增主键,并且手动设置了主键的值,那么当再次自增创建数据的时候,回在设置的主键值的基础上进行自增. 如(id是主键): 起始插入(3,1),而后手动插 ...
- mysql 自增主键为什么不是连续的?
由于自增主键可以让主键索引尽量地保持递增顺序插入,避免了页分裂,因此索引更紧凑 MyISAM 引擎的自增值保存在数据文件中 nnoDB 引擎的自增值,其实是保存在了内存里,并且到了 MySQL 8.0 ...
- mysql自增主键
MariaDB [test]> create table test1(id int primary key auto_increment,name varchar(20))auto_increm ...
随机推荐
- JAVA 列表输入学生的信息
package Code429; import java.util.ArrayList; public class CodeArrayListStudent { public static void ...
- postgresql :: FATAL: could not write init file
出现此错误,原因是磁盘空间被用尽.需要清理磁盘空间即可.
- .net mvc 使用盛派Senparc.Weixin 上传图片接口
首先获取微信签名,Controller代码: public ActionResult MutualHelpAdd() { var jssdkUiPackage = JSSDKHelper.GetJsS ...
- pandas合并merge-【老鱼学pandas】
本节讲述对于两个数据集按照相同列的值进行合并. 首先定义原始数据: import pandas as pd import numpy as np data0 = pd.DataFrame({'key' ...
- Cesium 动态更换模型贴图方法
参考资料 github 讨论地址 示例代码地址 示例代码 var viewer = new Cesium.Viewer('cesiumContainer'); var scene = viewer.s ...
- NumPy的思考……
问题: 为什么第一次输出矩阵形式的数据,第二次输出list形式的数据? 详见代码: a = np.array([[1, 2], [3, 4]]) print(a) print('ndim :', a. ...
- SpringMVC-2-(Controller)
一)参数类型 @RequestMapping("hello4") @ResponseBody public ModelAndView Hello4( // Servlet的三个参数 ...
- php代理
有些网上接口请求需要用代理 php代码 <?php header('Access-Control-Allow-Origin:*'); $url=$_POST['urlString']; $res ...
- Sicily T-primes
DescriptionWe know that prime numbers are positive integers that have exactly two distinct positive ...
- 多媒体开发(6):滤镜实现各种图片效果 | Video-Filters | avfilter | 变色
之前讲过使用FFmpeg的drawtext滤镜(把图片或文字加到视频上),而实际上,FFmpeg的滤镜很强大,远不止加字幕或加图片的功能.滤镜是很有趣的,可以把图片变模糊.变色.缩放旋转,等等. 本文 ...