insert主键返回 selectKey使用】的更多相关文章

有时候新增一条数据,知道新增成功即可,但是有时候,需要这条新增数据的主键,以便逻辑使用,再将其查询出来明显不符合要求,效率也变低了. 这时候,通过一些设置,mybatis可以将insert的数据的主键返回,直接拿到新增数据的主键,以便后续使用. 这里主要说的是selectKey标签 设计表的时候有两种主键,一种自增主键,一般为int类型,一种为非自增的主键,例如用uuid等. 首先说自增类型的主键. 1  映射xml中添加如下代码,注释写的很清楚了,不多做赘述. <!--新增信息,并拿到新增信息…
有时候新增一条数据,知道新增成功即可,但是有时候,需要这条新增数据的主键,以便逻辑使用,再将其查询出来明显不符合要求,效率也变低了. 这时候,通过一些设置,mybatis可以将insert的数据的主键返回,直接拿到新增数据的主键,以便后续使用. 这里主要说的是selectKey标签 设计表的时候有两种主键,一种自增主键,一般为int类型,一种为非自增的主键,例如用uuid等. 自增类型的主键 1  映射xml中添加如下代码,注释写的很清楚了,不多做赘述. <!--新增信息,并拿到新增信息的表主键…
update teacher set name ='111' where id in(286,289);print @@rowcount;--或select将查出,是@@rowcount,不是@rowcount或rowcount或其它 20181023 获取insert主键: select @@IDENTITY @@IDENTITY 列不能由用户直接更新,它是由系统自动维护的.  返回最后一个插入 IDENTITY 的值…
在使用MyBatis做持久层时,insert语句默认是不返回记录的主键值,而是返回插入的记录条数:如果业务层需要得到记录的主键时,可以通过配置的方式来完成这个功能. 比如在表的关联关系中,将数据插入主表之后需要再插入子表,我们需要把主表的主键作为外键插入子表中. 这样的话就需要获取主键值了. 所以涉及主键返回的问题. 1.自增主键的返回 针对自增主键的表,在插入时不需要主键,而是在插入过程自动获取一个自增的主键,比如MySQL,可以采用如下配置: 通过mysql函数LAST_INSERT_ID(…
4.7 根据用户名称模糊查询用户信息 4.7.1 映射文件 使用User.xml,添加根据用户名称模糊查询用户信息的sql语句. 4.7.2 程序代码 控制台: 4.8 添加用户 4.8.1 映射文件 在 User.xml中配置添加用户的Statement 4.8.2 程序代码 控制台: 4.8.3 自增主键返回 mysql自增主键,执行insert提交之前自动生成一个自增主键. 通过mysql函数获取到刚插入记录的自增主键: LAST_INSERT_ID() 是insert之后调用此函数. 修…
向数据库中插入数据时,大多数情况都会使用自增列或者UUID做为主键.主键的值都是插入之前无法知道的,但很多情况下我们在插入数据后需要使用刚刚插入数据的主键,比如向两张关联表A.B中插入数据(A的主键是B的外键),向A表中插入数据之后,向B表中插入数据时需要用到A的主键. 比如添加一个用户,同时返回插入用户后得到的用户id: /** * 添加用户信息 * @param user * @throws Exception */ public intinsertUser(User user) throw…
n Mybatis配置 全局配置文件SqlMapConfig.xml,配置了Mybatis的运行环境等信息. Mapper.xml文件即Sql映射文件,文件中配置了操作数据库的Sql语句.此文件需要在SqlMapConfig.xml中加载. n 通过Mybatis环境等配置信息构造SqlSessionFactory,即会话工厂. n 由会话工厂创建SqlSession即会话,操作数据库需要通过SqlSession进行. n Mybatis底层自定义了Executor执行器接口操作数据库,Exec…
自增主键返回 mysql自增主键,执行insert提交之前自动生成一个自增主键. 通过mysql函数获取到刚插入记录的自增主键: LAST_INSERT_ID() 是insert之后调用此函数. 修改insertUser定义: 非自增主键返回(使用uuid()) 使用mysql的uuid()函数生成主键,需要修改表中id字段类型为string,长度设置成35位. 执行思路: 先通过uuid()查询到主键,将主键输入 到sql语句中. 执行uuid()语句顺序相对于insert语句之前执行. 通过…
mybatis+oracle 完成插入数据库,并将主键返回的注意事项一条插入语句就踩了不少的坑,首先我的建表语句是: create table t_openapi_batch_info( BATCH_NO VARCHAR2(200), UM_CODE VARCHAR2(50), BATCH_STATUS CHAR(1) DEFAULT '0', BATCH_TYPE CHAR(1), CREATED_DATE DATE, CREATED_BY VARCHAR(100), UPDATED_DATE…
目录 文章目录 自增主键(LAST_INSERT_ID()) 非自增主键(UUID() ) 自增主键(LAST_INSERT_ID()) 在映射关系文件中配置 <!--插入用户--> <insert id="insertUser" parameterType="xin.ijava.pojo.User"> -- 主键返回 -- keyProperty:表示将主键赋给 pojo 的哪一个属性 -- order:表示该sql 相对于下面的 sql…
主键不自增:返回值是插入的条数 <insert id="add" parameterType="EStudent"> insert into TStudent(name, age) values(#{name}, #{age}) </insert 主键自增: <insert id="add" parameterType="EStudent" useGeneratedKeys="true&quo…
场景 保存订单数据和订单详情数据时需要将订单的主键作为关联子段添加到明细表中,需要将保存订单时的主键返回给供保存明细表时使用 添加xml中新增数据时的配置 <insert id="insertSelective" parameterType="com.hanilucky.core.vo.Orders" useGeneratedKeys="true" keyColumn="UUID" keyProperty="u…
Mysql: 主键自增长. 加上:keyProperty="id"就可以获得了. <insert id="insert" parameterType="entity" keyProperty="id" useGeneratedKeys="true"> insert into <include refid="t_user"/> (name, code, versio…
1.Mapper的写法,返回的这个int是受影响的行号 int insertNewUser(User newUser); 2.xml的写法 <!--返回主键 形式1 --> <insert id="saveReturnPK1" parameterType="cn.lyn4ever.bean.User" useGeneratedKeys="true" keyProperty="id"> INSERT IN…
添加用户.返回主键 --场景:在执行新增用户sql后,service层返回新增用户的主键值(与mybatis一起使用) insert into user(username, sex, birthday) values(#{username}, #{sex}, #{birthday}) 1.  数据库MySQL  主键自增 执行insert提交之后自动生成一个自增主键. 通过mysql的函数获取到刚刚插入记录的自增主键.LAST_INSERT_ID(); <selectKey keyPropert…
postgresql + mybatis插入记录时设置自增主键方法: 一.数据库设置主键自增 1.数据库中id字段选择serial4类型后,会在默认值中生成 nextval('app_id_seq'::regclass),即从序列中取下一个值 2.在AppDO类中包含字段:id,app_id,app_name 3.在mapper.xml中设置insert语句: <insert id="insert" parameterType="appdo"> inse…
一.概述: 在python转c#时,python中pandas.merge可以按主键合并两个datatable,苦苦找了很久,希望c#也有同样的函数,未果,就自己写了一个,目前测试没问题,同样我也考虑了效率和简洁的问题. 二.原理:      (1)封装的函数如下:传入两个datatable和主键,返回一个datatable private DataTable unite_on_datatable(DataTable dt1,DataTable dt2,string key) (2)先将dt1和…
问题描述: 在开发过程中,项目的主键生成器是SnowFlake,其生成的long主键是28位, 但是js中Long的最大值:https://blog.csdn.net/sunmerZeal/article/details/80844843 是26位, 所以当18位的long主键往前台传时,就导致了精度缺失,再往后传id进行更新或删除操作时,id就匹配不到位. 解决过程: 解决思路1: 首先想的是将后台主键由long类型改为String类型,组里几位小伙伴讨论后,有经验的大牛给出建议说,mysql…
转自:http://blog.163.com/liuweiyoung@126/blog/static/173131045201222122732435/ mysql中insert into和replace into以及insert ignore用法区别: mysql中常用的三种插入数据的语句: insert into表示插入数据,数据库会检查主键,如果出现重复会报错: replace into表示插入替换数据,需求表中有PrimaryKey,或者unique索引,如果数据库已经存在数据,则用新数…
<insert id="insertSelective" parameterType="com.o2o.Content" useGeneratedKeys="true" keyProperty="id"> insert into notice_ncontent <trim prefix="(" suffix=")" suffixOverrides=",&quo…
<insert id="insert" parameterType="cn.zno.smse.pojo.UserScan" useGeneratedKeys="true" keyProperty="scanId"> 无法返回自动生成的ID, 解决: 数据库中设计表,中勾选自动递增. mysql <table tableName="usertest" domainObjectName=&qu…
待总结 https://blog.csdn.net/JavaCoder_juejue/article/details/82313891 https://blog.csdn.net/a772304419/article/details/79669614 插入前,判断存不存在 https://www.cnblogs.com/luffe/p/7865316.html 1. ----------- 测试表及数据 ---------------- USE tempdb GO IF OBJECT_ID('A…
配置文件和映射文件再解读 映射文件 在mapper.xml文件中配置很多的sql语句,执行每个sql语句时,封装为MappedStatement对象,mapper.xml以statement为单位管理sql语句 Statement的实际位置就等于namespace+StatementId 配置文件 别名 typeAliases别名: 自定义别名: <!-- 定义 别名 --> <typeAliases> <!-- 单个别名的定义 alias:别名,type:别名映射的类型 -…
项目引用ibatis包: IBatisNet.Common.dll --文件版本1.6.2.0 IBatisNet.DataAccess.dll IBatisNet.DataMapper.dll 项目目录结构: 项目中使用ibatis做数据访问层已经有好长时间了.开发小组成员反映ibatis的insert操作返回的结果是null,这一点很是不爽. 其实,大家都是希望能够把新增记录的主键值返回出来. 上上周,大家有反编译ibatis的包,查看其实现原理,后来,又尝试其他方法,都没能给实现这个功能.…
在我们开发过程中,在插入数据到数据库时,很多时候都需要把其主键返回,这里就说一下mybatis是怎么获取的. 其中mysql和oracle是不同的做法,因为mysql本身就提供字段自增的属性,而oracle则需要使用序列. mysql <insert id="insert" parameterType="com.yitop.admin.domain.User" useGeneratedKeys="true" keyProperty=&quo…
<insert id="insert" parameterType="com.zqgame.game.website.models.Team"> <selectKey resultType="java.lang.Integer" keyProperty="teamId" order="AFTER"> SELECT LAST_INSERT_ID() </selectKey>…
在DBMS中可以使用insert语句显示指定自增主键值,但Mybatis中不可,即使指定了也无效,可以使用特殊的方式返回主键. 一.自增主键返回         mysql自增主键执行insert提交之前,会自动生成一个自增主键值:insert语句在提交之后可以调用mysql函数LAST_INSERT_ID() ,返回auto_increment自增列新记录id值:最后再将自增主键值返回到pojo对象中指定的属性中即可.这个函数只适用于自增主键. 1.标签属性 标签对应的属性含义如下: keyP…
向数据库中插入数据时,大多数情况都会使用自增列或者UUID做为主键.主键的值都是插入之前无法知道的,但很多情况下我们在插入数据后需要使用刚刚插入数据的主键,比如向两张关联表A.B中插入数据(A的主键是B的外键),向A表中插入数据之后,向B表中插入数据时需要用到A的主键. 比如添加一个用户,同时返回插入用户后得到的用户id: /** * 添加用户信息 * @param user * @throws Exception */ public int insertUser(User user) thro…