Mybatis中插入记录后获取该条记录ID

一、POJO

public class User {

	private Integer userId;
	private String name;
	public Integer getUserId() {
		return userId;
	}
	public void setUserId(Integer userId) {
		this.userId = userId;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}

二、数据库表

CREATE TABLE `t_user` (
  `user_id` int(11) NOT NULL AUTO_INCREMENT COMMENT ‘用户ID‘,
  `name` varchar(18) NOT NULL COMMENT ‘用户名‘,
  PRIMARY KEY (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=‘用户表‘

三、Mybatis映射文件中SQL语句

    <insert id="insert" parameterType="com.xxx.xxxx.pojo.User">
        insert into t_user (name)
        values (#{user.name})
        <selectKey resultType="Integer" order="AFTER" keyProperty="user.userId">
            SELECT LAST_INSERT_ID() AS userId
        </selectKey>
    </insert>

四、Dao层接口

void insert(@Param("user") User user);

五、Service层实现

@Override
public void insert() {
    User user = new User();
    user.setName("zain");
    dao.insert(user);
    System.out.println(user.getUserId); //发现ID已经获取了
}

  

时间: 2024-08-28 08:44:18

Mybatis中插入记录后获取该条记录ID的相关文章

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

mybatis如何成功插入后获取自增长的id

使用mybatis向数据库中插入一条记录,如何获取成功插入记录的自增长id呢? 需要向xml配置中加上一下两个配置: <insert id="add" useGeneratedKeys="true" keyProperty="id" parameterType="com.work.model.ScheduleInfoTable"> insert into scheduleInfo(title,content,tim

mybatis框架(6)---mybatis插入数据后获取自增主键

mybatis插入数据后获取自增主键 首先理解这就话的意思:就是在往数据库表中插入一条数据的同时,返回该条数据在数据库表中的自增主键值. 有什么用呢,举个例子: 你编辑一条新闻,同时需要给该新闻打上标签(可以一个或者多个:比如:女性,爱,钱等等),然后存储到数据库中.怎么存,肯定涉及到三张表,新闻表,标签表,新闻标签id关联表 新闻表插入数据简单,标签表插入数据简单.那新闻标签表呢,如何关联,那是不是需要新闻表和标签表插入数据的时候,返回它们的主键Id然后再存储到新闻标签表中. 这种场景还是蛮常

SQL存储过程中,传参获取指定条数的记录

假设传入参数 为 @TopCount 直接写 Select top @topcount * from table 是不行的. 可以考虑使用SET ROWCOUNT 示例如下 ALTER PROCEDURE [dbo].[P_CSM_SelectHandleResult] @TopCount int=50 AS BEGIN SET NOCOUNT ON; set rowcount @TopCount SELECT * from HandleResult order by HandleIndex d

PHP如何实现在数据库随机获取几条记录

本文实例讲述了PHP实现在数据库百万条数据中随机获取20条记录的方法.PHP实例分享给大家供大家参考,具体如下: 为什么要写这个? 在去某个公司面试时,让写个算法出来,当时就蒙了,我开发过程中用到算法的吗?又不是大数据开发,分析. 今天偶然想起来一个坑爹数据,如:PHP取百万条数据中随机20条记录,当时就用的算法. 1.先统计统计数据库多少条记录(这个做个数据缓存,如1小时重新统计一次), 2.根据总条数,随机1次,1次性取出20条记录(当然这个就相当于分页了,要求不高的话,这个最快,我用的就是

db2中取表的前几条记录 (转)

原文出处:http://csjava.blog.163.com/blog/static/19047003320119110358572/ db2中SELECT TOP N * FORM TABLENAME 是不能取到表中前几条记录的.要使用 SELECT * FROM TABLENAME FETCH FIRST N ROWS ONLY.其中N即是你要取的前几条记录. db2中取表的前几条记录 (转)

hibernate实现分表后获取insert自增ID方法。

#第一种基于原生的JDBC的方式实现 private Integer insert(POJO entity, String table) throws SQLException { String insertSQL = "INSERT INTO " + table + " (XXXX)VALUES(?,?,?,?,?,?,?,?)"; DataSource dataSource = SessionFactoryUtils.getDataSource(getHiber

mybatis中useGeneratedKeys用法--插入数据库后获取主键值

前言:今天无意在mapper文件中看到useGeneratedKeys这个词,好奇就查了下,发现能解决我之前插入有外键表数据时,这个外键获取繁琐的问题,于是学习敲DEMO记录    在项目中经常需要获取到插入数据的主键来保障后续操作,数据库中主键一般我们使用自增或者uuid()的方式自动生成 问题:对于uuid使用Java代码生成的方式还比较容易控制,然而使用数据库生成的主键,这样我们就需要将插入的数据再查询出来得到主键,某些情况下还可能查询到多条情况,这样就比较尴尬了. 那有什么办法来插入数据

Linq To EF (添加记录后获取添加的自增ID和叫“ID”的列不是自增列不让插入的问题)

1:添加记录后,如何获取新添加的ID的值 比如,一个实体 TestEntity   对应一个表TestEntity(ID主键自增,Name,age),使用linq to ef   添加一条记录后,如何获取新记录的ID值?如下代码: var te = new TestEntity (){ Name = "名字", Age = 21};using (EFDbContext context = new EFDbContext()){ context.TestEntity .Add(te);