【JavaEE】之MyBatis插入数据后获取自增主键
很多时候,我们都需要在插入一条数据后回过头来获取到这条数据在数据表中的自增主键,便于后续操作。针对这个问题,有两种解决方案:
- 先插入,后查询。我们可以先插入一条数据,然后根据插入的数据的各个字段值,再次访问数据库,从数据库中将刚刚插入的数据查询出来。当然,这种方法是很笨的,不提倡使用。
- 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插入数据后获取自增主键的更多相关文章
- mybatis框架(6)---mybatis插入数据后获取自增主键
mybatis插入数据后获取自增主键 首先理解这就话的意思:就是在往数据库表中插入一条数据的同时,返回该条数据在数据库表中的自增主键值. 有什么用呢,举个例子: 你编辑一条新闻,同时需要给该新闻打上标 ...
- 【JAVA - SSM】之MyBatis插入数据后获取自增主键
很多时候,我们都需要在插入一条数据后回过头来获取到这条数据在数据表中的自增主键,便于后续操作.针对这个问题,有两种解决方案: (1)先插入,后查询.我们可以先插入一条数据,然后根据插入的数据的各个字段 ...
- mybatis插入数据后返回自增主键ID详解
1.场景介绍: 开发过程中我们经常性的会用到许多的中间表,用于数据之间的对应和关联.这个时候我们关联最多的就是ID,我们在一张表中插入数据后级联增加到关联表中.我们熟知的mybatis在插入数据后 ...
- mybatis新增数据后获取自增主键
mybatis对应mysql <insert id="insert" parameterType="com.timestech.wsgk.web.model.Sys ...
- C#连接mysql数据库插入数据后获取自增长主键ID值
From: http://blog.csdn.net/zbc496218/article/details/51082983 MySqlConnection conn = new MySqlConnec ...
- SQL Server 插入数据后获得自增主键值
通过SQLServer系统自带函数获取 String sql = "insert into goods values('" + TextBox1.Text + "',&q ...
- Mybatis学习笔记4 - 获取自增主键的值
获取自增主键的值:mysql支持自增主键,自增主键值的获取,mybatis也是利用statement.getGenreatedKeys():useGeneratedKeys="true&qu ...
- Mybatis中,当插入数据后,返回最新主键id的几种方法,及具体用法
insert元素 属性详解 其属性如下: parameterType ,入参的全限定类名或类型别名 keyColumn ,设置数据表自动生成的主键名.对特定数据库(如PostgreSQL),若自动生成 ...
- mybatis插入数据后返回自增的主键id
在插入数据时候想自动返回mysql的自增的主键,需要在mapper.xml中配置下: <insert id="insert" parameterType="com. ...
随机推荐
- 《大数据实时计算引擎 Flink 实战与性能优化》新专栏
基于 Flink 1.9 讲解的专栏,涉及入门.概念.原理.实战.性能调优.系统案例的讲解. 专栏介绍 扫码下面专栏二维码可以订阅该专栏 首发地址:http://www.54tianzhisheng. ...
- 谁说搞Java的不能玩机器学习?
简介 机器学习在全球范围内越来越受欢迎和使用. 它已经彻底改变了某些应用程序的构建方式,并且可能会继续成为我们日常生活中一个巨大的(并且正在增加的)部分. 没有什么包装且机器学习并不简单. 它对许多人 ...
- MongoDB自建和阿里云RDS备份还原
MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功 ...
- 前端技术之:常见前端Web框架
Express 声称是快速.自由.小巧的Node.js Web框架,官网地址如下: https://expressjs.com/ https://github.com/expressjs/expres ...
- SROP的一个实例
以前一直只是大概看过这种技术,没实践过,今天刚好遇到一道题,实践了一波,确实很方便 unmoxiao@cat ~/s/pd_ubuntu> r2 -A smallest 00:54:15 War ...
- [考试反思]0729NOIP模拟测试10
安度因:哇哦. 安度因:谢谢你. 第三个rank1不知为什么就来了.迷之二连?也不知道哪里来的rp 连续两次考试数学都占了比较大的比重,所以我非常幸运的得以发挥我的优势(也许是优势吧,反正数学里基本没 ...
- Oracle“ORA-00979:不是GROUP BY 表达式”解决方式
今天在工作中碰到一个问题,用group by 语句进行分组时出现ORA-00979错误. 代码如下: select R.ORDER_NO, R.PRODUCT_CODE, R.REGION_NO, R ...
- FastDFS图片服务器单机安装步骤
前面已经讲 一张图秒懂微服务的网络架构,通过此文章可以了解FastDFS组件中单机安装流程. 单机版架构图 以下为单机FastDFS安装步骤 一.环境准备 CentOS 7.X libfastcomm ...
- windows备份mysql数据库
1.编写执行文件mysql_backup.bat rem auther:ELSON ZENGrem date:20191104rem mysql backup! @echo off set mysql ...
- introduce new products
Today's the day. I'm giving you the heads up. Our company is rolling up its new line of cell phones. ...