很多时候,我们都需要在插入一条数据后回过头来获取到这条数据在数据表中的自增主键,便于后续操作。针对这个问题,有两种解决方案:

  • 先插入,后查询。我们可以先插入一条数据,然后根据插入的数据的各个字段值,再次访问数据库,从数据库中将刚刚插入的数据查询出来。当然,这种方法是很笨的,不提倡使用。
  • MyBatis为我们提供了一种在插入数据后获取自增主键的方式,通过这种方式,我们可以在插入一条数据之后直接从插入的POJO对象中取出id即可。这种方式简单且效率高、节省代码量,因此提倡使用。

  Mapper.xml文件中的代码如下:

<mapper namespace="testuser">
<insert id="insertUser" parameterType="com.itgungnir.hellomybatis.bean.User">
<!-- 将插入数据的主键返回,返回到User对象中 -->
<!-- keyProperty:将查询到的主键值设置到parameterType对象的哪个属性中 -->
<!-- order:SELECT LAST_INSERT_ID()语句的执行顺序(相对于insert语句来说的执行顺序) -->
<!-- resultType:指定SELECT LAST_INSERT_ID()语句的结果类型 -->
<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
<!-- SELECT LAST_INSERT_ID():得到刚insert到数据表中的记录的主键值,只适用于自增主键 -->
SELECT LAST_INSERT_ID()
</selectKey>
INSERT INTO user(name) VALUES(#{name})
</insert>
</mapper>

  测试代码中这样写:

public void insertUser(){
SqlSession session = null;
try {
// MyBatis配置文件
String resource = "SqlMapConfig.xml";
// 得到配置文件流
InputStream is = Resources.getResourceAsStream(resource);
// 创建会话工厂,传入MyBatis配置文件的信息
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
// 通过工厂得到SqlSession
session = factory.openSession();
// 要添加到数据库中的作为参数的员工对象
User user = new User();
user.setName("111111");
// 通过SqlSession操作数据库,查询结果是与映射文件中的resultType相匹配的数据类型
// 第一个参数:映射文件中Statement的id,等于namespace+"."+statementid
// 第二个参数:指定和映射文件中的SQL语句匹配的parameter type类型的参数
session.insert("testuser.insertUser", user);
// 提交事务
session.commit();
// 打印主键
System.out.println(user.getId());
} catch (IOException e) {
e.printStackTrace();
} finally {
// 释放资源(会话资源)
if (session != null) {
session.close();
}
}
}

【JavaEE】之MyBatis插入数据后获取自增主键的更多相关文章

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

    mybatis插入数据后获取自增主键 首先理解这就话的意思:就是在往数据库表中插入一条数据的同时,返回该条数据在数据库表中的自增主键值. 有什么用呢,举个例子: 你编辑一条新闻,同时需要给该新闻打上标 ...

  2. 【JAVA - SSM】之MyBatis插入数据后获取自增主键

    很多时候,我们都需要在插入一条数据后回过头来获取到这条数据在数据表中的自增主键,便于后续操作.针对这个问题,有两种解决方案: (1)先插入,后查询.我们可以先插入一条数据,然后根据插入的数据的各个字段 ...

  3. mybatis插入数据后返回自增主键ID详解

    1.场景介绍: ​ 开发过程中我们经常性的会用到许多的中间表,用于数据之间的对应和关联.这个时候我们关联最多的就是ID,我们在一张表中插入数据后级联增加到关联表中.我们熟知的mybatis在插入数据后 ...

  4. mybatis新增数据后获取自增主键

    mybatis对应mysql <insert id="insert" parameterType="com.timestech.wsgk.web.model.Sys ...

  5. C#连接mysql数据库插入数据后获取自增长主键ID值

    From: http://blog.csdn.net/zbc496218/article/details/51082983 MySqlConnection conn = new MySqlConnec ...

  6. SQL Server 插入数据后获得自增主键值

    通过SQLServer系统自带函数获取 String sql = "insert into goods values('" + TextBox1.Text + "',&q ...

  7. Mybatis学习笔记4 - 获取自增主键的值

    获取自增主键的值:mysql支持自增主键,自增主键值的获取,mybatis也是利用statement.getGenreatedKeys():useGeneratedKeys="true&qu ...

  8. Mybatis中,当插入数据后,返回最新主键id的几种方法,及具体用法

    insert元素 属性详解 其属性如下: parameterType ,入参的全限定类名或类型别名 keyColumn ,设置数据表自动生成的主键名.对特定数据库(如PostgreSQL),若自动生成 ...

  9. mybatis插入数据后返回自增的主键id

    在插入数据时候想自动返回mysql的自增的主键,需要在mapper.xml中配置下: <insert id="insert" parameterType="com. ...

随机推荐

  1. (Java) JWT-TokenUtils

    package com.vcgeek.hephaestus.utils; import com.auth0.jwt.JWT; import com.auth0.jwt.JWTVerifier; imp ...

  2. Oracle Dorp 表数据恢复

    利用Oracle 数据回闪机制进行恢复,当一个表被drop掉,表会被放入recyclebin回收站,可通过回收站做表的闪回.表上的索引.约束等同样会被恢复不支持sys/system用户表空间对象,可通 ...

  3. MinIO 搭建

    MinIO 搭建 MinIO 是一个基于 Apache License v2.0 开源协议的对象存储服务.它兼容亚马逊 S3 云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片.视频.日志文 ...

  4. NOIP模拟 4

    T1没开longlong T2忘了有向... T3是个好题,可以说将复杂度从N^2优化到NlogN是一个质的飞跃 考虑分治(要想出log可不就要分治么!(segtree也行 但我不会) 对于一个分治区 ...

  5. docker安装制定版本-centos7

    # 安装依赖包 yum install -y yum-utils device-mapper-persistent-data lvm2 # 添加Docker软件包源 yum-config-manage ...

  6. day 1 堆 hash 线段树 树状数组 冰茶姬 字典树 二叉查找树

    来郑州的第二天,早上开始也没说什么就说了些注意安全,各种各样的注意安全... 冰茶姬: 原来再打食物链时看了一下冰茶姬,只注意了路径压缩,没想到还有什么按秩排序但确实快了不少... int find( ...

  7. day5-基本数据类型总结

    一.数字int(..)二.字符串replace/find/join/strip/startswith/split/upper/lower/format tempalte = "i am {n ...

  8. 护网杯web

    首先进入网页后,观察到有sign up 点击sign up 进行注册 再点击sign in 进行登录 进入一个买辣条的界面,可以知道,5元可以买一包大辣条,多包大辣条可以换一包辣条之王,多包辣条之王可 ...

  9. Nginx使用反向代理实现负载均衡

    Nginx使用反向代理实现负载均衡 yls 2019-9-20 简介 基于docker容器以及docker-compose,所以需要自学docker在linux环境的基本使用 使用两个tomcat作为 ...

  10. 【SQL】安装后设置 sa账号登录

    1.windows身份验证登录管理员账户   2.找到sa账号双击  3.设置密码,启用 4.右键 属性 安全性   5.重启服务,sa账号登录   本地服务用  .     6.登录成功: