mybatis+mysql insert添加数据后返回数据主键id

1.根据useGeneratedKeys获取返回值,部分数据库不支持

修改mybatis xml

 <insert id="insertUser" useGeneratedKeys="true" keyProperty="id" parameterType="com.entity.user">
    insert into test (name) values (#{name})
 </insert>

useGeneratedKeys="true" :设置是否使用JDBC的getGenereatedKeys方法获取主键并赋值到keyProperty设置的领域模型属性中。(适用于mysql、sqlserver数据库,oracle不能使用,使用selectkey子节点做)

keyProperty:赋值的对象的属性名称。

添加完成后,直接根据对象属性取值。

user u=new user();
u.setName("测试");
System.out.println(u.getId()+"取值前");
int num = userService.insert(u);
System.out.println(u.getId()+"取值后");

2.根据selectkey获取

 <insert id="insertUser"  parameterType="com.entity.user">
     insert into test (name) values (#{name})
      <selectKey keyProperty="id" resultType="java.lang.Integer">
      select LAST_INSERT_ID() as id
      </selectKey>
    </insert>

后台代码不变。

原文:https://blog.csdn.net/shuaipu813/article/details/52755808

原文地址:https://www.cnblogs.com/zhang-cb/p/9900176.html

时间: 2024-10-12 22:23:04

mybatis+mysql insert添加数据后返回数据主键id的相关文章

spring jdbcTemplate insert插入Oracle数据库后返回当前主键id

最近做一个spring版本3.0.4的老项目功能,应用场景要用到jdbctemplate插入oracle表后返回主键ID拿来和其他表关联. 用oralce的可以一直用这种处理方式,高兼容低. public long insertOraGetId(final QuetInvtHeadVO headVO) { KeyHolder keyHolder = new GeneratedKeyHolder(); jdbcTemplate.update(new PreparedStatementCreator

SqlServer中插入数据后如何得到主键ID

使用@@IDENTITY 例如:insert into student(name,age) values('fanqi',23) select @@identity 使用 OUTPUT inserted 例如:INSERT INTO UserInfo(Username,LogName,[Password],resTime) OUTPUT inserted.UserID VALUES ('12345','56789','112233',GETDATE()) 原文地址:https://www.cnb

Winform开窗,筛选数据后返回数据的方法

在开发中,经常需要打开另一个窗体(简写为"开窗"),然后在开窗中进行数据筛选,选中需要的数据,最后将值传递给本原来的窗体.而且,这个开窗可以重复用于多个地方,其效果如同日历控件的弹出窗口.如下图所示: 测试环境 vs2008 基本思路 1.创建一个窗体类. (1)为该类添加用于传递值的属性. (2)为该类添加一个事件,用于通知调用方值已经准备好. (3)在窗体类的某个函数中,如单元格双击处理函数中,为属性赋值,并引发这个事件. 2.调用该窗体类. (1)定义一个全局的窗体类对象. (2

数据库插入数据返回当前主键ID值方法

环境:SQL Anywhere 9.0.2 创建语句: create table test(    id int primary key identity(1,1),    name varchar(20)) 当我们插入一条数据的时候,我们很多时候都想立刻获取当前插入的主键值返回以做它用.我们通常的做法有如下几种: 1. 先 select max(id) +1 ,然后将+1后的值作为主键插入数据库: 2. 使用特定数据库的 auto_increment 特性,在插入数据完成后,使用 select

Mycat探索之旅(4)----Mycat的自增长主键和返回生成主键ID的实现

说明:MyCAT自增长主键和返回生成主键ID的实现 1) mysql本身对非自增长主键,使用last_insert_id()是不会返回结果的,只会返回0:这里做一个简单的测试 创建测试表 -------------------------------------- --创建测试表 ------------------------------------- USE test; CREATE TABLE IF NOT EXISTS t_auto_increment ( id INT NOT NULL

使用mybatis插入自增主键ID的数据后返回自增的ID

在开发中碰到用户注册的功能需要用到用户ID,但是用户ID是数据库自增生成的,这种情况上网查询后使用下面的方式配置mybatis的insert语句可以解决: 1 <insert id="insert" keyProperty="id" useGeneratedKeys="true"? parameterType="com.demo.domain.User">? 2 insert into User_t(name,ag

mybatis自动生成后无法获取主键id问题

使用mybatis的自动生成工具生成的主键id: <selectKey resultType="java.lang.Integer" keyProperty="id" order="AFTER" > SELECT LAST_INSERT_ID()</selectKey> 使用sharding-jdbc时候 一直提示 分片报错, 可以使用这种方式解决: <insert id="insertSelective&

mysql自增长主键,删除数据后,将主键顺序重新排序

用数据库的时候,难免会删除数据,会发现设置的主键增长不是按照正常顺序排列,中间有断隔比如这样. 以我这个情况举例 处理方法的原理:删除原有的自增ID,重新建立新的自增ID. ALTER TABLE `news` DROP `NewsID`;ALTER TABLE `news` ADD `NewsID` int NOT NULL FIRST;ALTER TABLE `news` MODIFY COLUMN `NewsID` int NOT NULL AUTO_INCREMENT,ADD PRIMA

Access获取新插入数据的自增长主键Id

Access数据库不能用output,自己写类似Oracle的Sequence. 1 public int InsertEx(User user) 2 { 3 int id = -1; 4 5 using (OleDbConnection conn = new OleDbConnection(AccessHelper.connectionString)) 6 { 7 conn.Open(); 8 9 OleDbCommand cmd = new OleDbCommand { Connection