这是最近在实现perfect-ssm中的一个功能时碰到的一个小问题,觉得需要记录一下,向MySQL数据库中插入一条记录后,需要获取此条记录的id值,以生成对应的key值存入到redis中,id为自增int...主键。...add_name) values(#{articleTitle},#{articleCreateDate},#{articleContent},#{addName}) 这种方式只是返回一个影响行数值...mysql中表的记录如下: ? 结语 首发于我的个人博客,新的项目演示地址:perfect-ssm,登录账号:admin,密码:123456 ?
主键的值都是插入之前无法知道的,但很多情况下我们在插入数据后需要使用刚刚插入数据的主键,比如向两张关联表A、B中插入数据(A的主键是B的外键),向A表中插入数据之后,向B表中插入数据时需要用到A的主键。...id } 这里总结一下mybatis插入数据时返回主键的4种情况:mysql环境下主键自增、mysql环境下主键为uuid、mysql环境下主键自增、mysql环境下主键为uuid。 ...数据库为mysql ---- 主键为自增时(主键为数值类型且自增) 利用mysql的LAST_INSERT_ID()方法获取插入记录的主键,select LAST_INSERT_ID()可以在插入数据后...,查询并返回刚插入数据的主键(但是单独执行这条语句只会返回0)。...主键为UUID时(主键必须为字符类型) 使用mysql的方法UUID()方法获取随机的UUID作为主键,select UUID()可以在插入数据前,生成随机的UUID并通过keyProperty赋值给将要插入记录的主键
最近开发全栈项目时,前端有个数据行可以被随便修改,所以必须给他一个标识记录该数据行,即向MySQL数据库中插入一条记录后,需要获取此条记录的主键id值返回给前端。...content,name) values(#{articleTitle},#{articleCreateDate},#{articleContent},#{addName}) insert> 这种方式只是返回一个影响行数值...insert> 关键属性 useGeneratedKeys 仅适用于 insert 和 update,这会令 MyBatis 使用 JDBC 的 getGeneratedKeys 方法来取出由数据库内部生成的主键...(比如MySQL的自动递增主键字段),默认值:false。...所以要打开设为 true keyProperty 仅适用于 insert 和 update,指定能够唯一识别对象的属性,MyBatis 会使用 getGeneratedKeys 的返回值或 insert
有时候使用mybatis插入数据后,需要用到记录在数据库中的自增id,可以利用keyProperty来返回,赋值给实体类中的指定字段。...单条记录插入并返回 First, if your database supports auto-generated key fields (e.g....MySQL and SQL Server), then you can simply set useGeneratedKeys="true" and set the keyProperty to the...id为实体类中的字段名称 多条记录插入并返回 If your database also supports multi-row insert, you can pass a list or an array...}, #{item.password}, #{item.email}, #{item.bio}) 坑:要注意,多条记录时,有可能会出现id没有返回的情况
public int addClifford(Clifford clifford) { String sql = "insert into t_user...
keyProperty="id" 3: keyProperty 这个设置的是 你传入对象的属性名,不是你数据表的字段 如果以上情况都满足,那么你很有可能犯了一个和我一样的错误 网上大部分教程在写 insert对象并返回自增主键的
对特定数据库(如PostgreSQL),若自动生成的主键不是第一个字段则必须设置 keyProperty ,默认值unset,用于设置getGeneratedKeys方法或selectKey子元素返回值将赋值到领域模型的哪个属性中...MySQL和SQLServer执行auto-generated key field,因此当数据库设置好自增长主键后,可通过JDBC的getGeneratedKeys方法获取。...等,表示数据库厂家,元素内部可通过``来为特定数据库指定不同的sql语句 三、一般的INSERT操作——返回值为插入的记录数目 ...name}, #{age}) 手段②: // 下面是SQLServer获取最近一次插入记录的主键值的方式...selectKey> insert into TStudent(id, name, age) values(#{id}, #{name}, #{age}) </insert 注意:mapper接口返回值依然是成功插入的记录数
前言 大家好吖,欢迎来到 YY 滴MySQL系列 ,热烈欢迎!...本章主要内容面向接触过C++ Linux的老铁 主要内容含: 一.主键优化 1.主键设计原则 满足业务需求的情况下, 尽量降低主键的长度。...插入数据时,尽量选择 顺序插入 ,选择使用AUTOINCREMENT自增主 顺序插入可以减少 页分裂 (可以了解下按下面的数据组织方式) 2.数据组织方式 【1】主键顺序插入 在大多数数据库系统中,如表数据是使用...主键顺序插入 第一个页满了,插入第二个页,一页16k,以此类推 【2】页分裂(主键乱序插入) 下面演示页分裂: 此时两页都满了, 我们要插入id为50的数据 ,他会开辟一个新的数据页,但并不是直接插入到第三个数据页当中...找到第一个 数据页百分之50的位置 ,大于百分之50的部分移动的新开辟的数据页当中 之后插入id为50的数据 插入要进入的50数据时,此时就应该改动链表指针 【3】页合并(主键乱序删除) 当删除一行记录时
1.场景介绍: 开发过程中我们经常性的会用到许多的中间表,用于数据之间的对应和关联.这个时候我们关联最多的就是ID,我们在一张表中插入数据后级联增加到关联表中.我们熟知的mybatis在插入数据后返回的是插入成功的条数...2.插入数据返回自增主键ID方法(一) 在映射器中配置获取记录主键值 xml映射: 在xml中定义useGeneratedKeys为true,返回主键id的值,keyProperty和keyColumn...-- 插入数据:返回记录主键id值 --> ...需要注意的是,在MyBatis中添加操作返回的是记录数并非记录主键id。...System.out.println("id = " + student.getId()); // 执行添加操作之后通过Java对象获取主键属性值 添加批量记录时返回主键ID 如果希望执行批量添加并返回各记录主键字段值
1.1 xml 配置主键返回 <!...-- last_insert_id() : 查询刚插入数据自增 id order : 执行的时机: after 之前执行; before 之后执行...selectKey> insert into orders value(null, #{ordertime}, #{total}, #{uid}) 1.2 注解配置主键返回...insert into orders values(null, #{ordertime}, #{total}, #{uid})") Integer insert(Orders orders); 1.3 获取主键...// 实体类对象,属性值省略 Orders orders; // 插入,返回值为影响的行数 Integer rows = sqlSession.getMapper(OrdersDao.class).insert
往数据库插入数据后,返回数据主键信息。有两种方法。 一种:使用insert标签中的useGeneratedKeys属性和keyProperty属性组合使用获取主键信息。...-- 插入用户useGeneratedKeys="true"表示返回生成的主键keyProperty 表示把返回的key注入到返回值的哪个属性中keyProperty="id" 表示把返回的id主键值注入到返回对象的...into t_user(last_name,sex) values(#{lastName},#{sex})12345678910标签的使用 selectKey 通过前置或后置操作,返回数据的主键值...插入记录并返回主键主要是在标签中添加一个的作用主要就是为了返回插入记录后,自动生成的主键信息 order 表示执行的顺序。 AFTER 表示在插入之后执行。 BEFORE 在插入之前执行。...keyProperty 属性设置对象的哪个属性接收 resultType 属性设置返回值类型。
Python 中貌似并没有直接返回插入数据 id 的操作(反正我是没找到),但是我们可以变通一下,找到最新插入的数据 #!...*- import pymysql db = pymysql.connect(**db_conf) cursor = db.cursor() cursor.execute(sql) # 最后插入行的主键...id print(cursor.lastrowid) # 最新插入行的主键id print(conn.insert_id()) conn.commit() 使用 cursor.lastrowid...中并没有所谓的真正多线程,建议使用多进程 补充拓展:mysql中插入一条数据后得到插入后的主键id值 ** 当我们涉及多表进行插入操作是,常常需要在程序中等到刚刚插入数据的主键Id, 便与进行多表关联...="id" SELECT LAST_INSERT_ID() AS id </selectKey 以上这篇Python3 操作 MySQL 插入一条数据并返回主键 id的实例就是小编分享给大家的全部内容了
往数据库插入数据后,返回数据主键信息。有两种方法。 一种:使用insert标签中的useGeneratedKeys属性和keyProperty属性组合使用获取主键信息。...-- 插入用户 useGeneratedKeys="true" 表示返回生成的主键 keyProperty 表示把返回的key注入到返回值的哪个属性中 keyProperty...插入记录并返回主键主要是在标签中添加一个 的作用主要就是为了返回插入记录后,自动生成的主键信息 order 表示执行的顺序。...AFTER 表示在插入之后执行。 BEFORE 在插入之前执行。 keyProperty 属性设置对象的哪个属性接收 resultType 属性设置返回值类型。 <!...-- selectKey标签主要用于插入数据后,获取生成的主键。 order 表示执行的顺序,AFTER表示在插入之后执行。
我们使用Spring中的JdbcDaoSupport往Mysql中插入数据并返回主键代码,我们使用的mysql数据库,主键在数据库中设置为自增长:该类继承自JdbcDaoSupport,所以能直接使用getJdbcTemplate...password) " + "values(SEQ_ZB_JC_PLAN.nextval,:userName,:age,:password)"; //须要最后一个String集合列表參数,id表示表主键...[]{"id"}); Integer generatedId = keyHolder.getKey().intValue(); return generatedId; } 执行后,成功执行并返回主键
XML方式 返回自增主键 insert into sys_user(...由于要使用数据库返回的主键值 , 所以SQL上下两部分的列中去掉了 id 列和对于的 #{id} 属性 返回非自增主键 采用标签获取主键的值 , 这种方式对提供和不提供主键自增功能的数据库同样适用...) selectKey标签的 keyProperty和上面useGeneratedKeys的用法和含义一样 , 这里的resultType用于设置返回值类型.... order 属性和数据库相关 , 在MYSQL 中 , order是AFTER , 因为当前及记录的主键值在insert语句执行成功之后才能拿到 , 而在ORACLE中 ,oder是BEFORE ,...因为ORACLE需要先从序列取到值 , 再将其作为主键插入到数据库
Mysql 创建联合主键 2008年01月11日 星期五 下午 5:21 使用primary key (fieldlist) 比如: create table mytable ( aa int, bb...char(8), cc date, primary key (aa,bb ) ); aa,bb为联合主键 不知道是不是因为mysql(6.0)的版本问题,还是各版本都是这种情况,mysql中创建联合主键...TABLE t1( id … MySQL创建双主键 如下: CREATE TABLE `loginlog` ( `id` ) unsigned zerofill NOT NULL AUTO_INCREMENT...COMMENT ‘主键编号’, `IP` … mysql修改联合主键 参考 https://blog.csdn.net/BockSong/article/details/80933477 alter...涉及的知识点总结如下: One to One 映射关系 一对一单向外键(XML/Annotation) 一对一双向外键关联(XML/A … SQL Server中的联合主键、聚集索引、非聚集索引、mysql
主键乱序插入 : 8 1 9 21 88 2 4 15 89 5 7 3 主键顺序插入 : 1 2 3 4 5 7 8 9 15 21 88 89 大批量插入数据 如果一次性需要插入大批量数据...(比如: 几百万的记录),使用insert语句插入性能较低,此时可以使用MySQL数据库提供的load指令进行插入。...2.4 主键设计原则 满足业务需求的情况下,尽量降低主键的长度。 插入数据时,尽量选择顺序插入,选择使用AUTO_INCREMENT自增主键。...3、order by 优化 MySQL的排序,有两种方式: Using filesort : 通过表的索引或全表扫描,读取满足条件的数据行,然后在排序缓冲区sortbuffer中完成排序操作,所有不是通过索引直接返回排序结果的排序都叫...count 用法 含义 count(主 键) InnoDB 引擎会遍历整张表,把每一行的 主键id 值都取出来,返回给服务层。
SelectKey在Mybatis中是为了解决Insert数据时不支持主键自动生成的问题,他可以很随意的设置生成主键的方式。...); } catch (Exception e) { logger.error(e.getMessage()); } return 0; } **map中会增加返回的主键
resultType : 正常的返回值。...也就是 PRSP_CRM_ENTERP_ID.nextval 的返回值类型 order : 这个oracle 必须写BEFORE ,mysql 是after 。...不要采坑 mysql 中 如下: <selectKey resultType
一、自增主键优缺点 1.优点 查询和插入的性能较高(增量增长,按序存放,具体可查看InnoDB相关资料了解B+树) 插入新记录时不用担心主键会重复 2.缺点 分布式系统中不太适用 二、回到正文 1.核心...userModel = new UserModel("测试姓名","测试地址"); userMapper.addUser(userModel); System.out.println("主键为
领取专属 10元无门槛券
手把手带您无忧上云