详解MyBatis中主键回填的两种实现方式
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)

MyBatis 中主键回填的两种实现方式 MyBatis 是一个基于 Java 的持久层框架,它提供了对数据库的访问和操作的功能。在数据添加的过程中,经常需要获取刚刚添加的数据 id,这个需求被称为主键回填。MyBatis 中主键回填有两种实现方式,本文将对这两种方式进行详细的介绍。 原生写法 在 JDBC 中,主键回填可以通过构造 PreparedStatement 来实现。在构造 PreparedStatement 时,需要指定需要主键回填,然后在插入成功后,查询刚刚插入数据的 id。示例代码如下: ```java public int insert(Person person) { Connection con = null; PreparedStatement ps = null; ResultSet rs = null; con = DBUtils.getConnection(); ps = con.prepareStatement("INSERT INTO person(username,password,money) VALUES(?,?,?)", PreparedStatement.RETURN_GENERATED_KEYS); ps.setObject(1, person.getUsername()); ps.setObject(2, person.getPassword()); ps.setObject(3, person.getMoney()); int i = ps.executeUpdate(); rs = ps.getGeneratedKeys(); int id = -1; if (rs.next()) { id = rs.getInt(1); } return id; } ``` 这种方式是原生的写法,在 MyBatis 中,对此需求提供了两种不同的实现方案。 框架写法 在 MyBatis 中,主键回填有两种实现方式: 方式一 第一种方式是使用 useGeneratedKeys 属性,在插入节点上添加这个属性,同时设置接收回传主键的属性。示例代码如下: ```xml <insert id="insertBook" useGeneratedKeys="true" keyProperty="id"> insert into t_book (b_name,author) values (#{name},#{author}); </insert> ``` 这种方式比较简单,是 松哥 推荐的一种实现方式。配置完成后,我们执行一个插入操作,插入时传入一个对象,插入完成后,这个对象的 id 就会被自动赋值,值就是刚刚插入成功的id。 方式二 第二种方式是利用 MySQL 自带的 last_insert_id() 函数查询刚刚插入的id,示例代码如下: ```xml <insert id="insertBook"> <selectKey keyProperty="id" resultType="java.lang.Integer"> SELECT LAST_INSERT_ID() </selectKey> insert into t_book (b_name,author) values (#{name},#{author}); </insert> ``` 这种方式是在 insert 节点中添加 selectKey 来实现主键回填,实际上这种方式的功能更加丰富,因为 selectKey 节点中的 SQL 我们既可以在插入之前执行,也可以在插入之后执行。 MyBatis 中主键回填的两种实现方式都可以满足我们的需求,但是方式一更加简单易用,是 松哥 推荐的一种实现方式。


























- 粉丝: 7
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 网络卫士安全隔离与信息交换系统技术培训.pptx
- 信息安全体系结构信息系统安全体系研究.pptx
- 扩频通信中直接扩频系统的同步技术.doc
- (源码)基于ESP8266芯片的环境监测系统.zip
- 基于思维导图的网络营销课程教学改革与实践.pdf
- 数字图像处理技术-第02章-MATLAB图像处理简介.ppt
- 2023年9月计算机等级考试二级C语言上机题库100套光碟拷贝版.doc
- sybyl软件与计算机辅助药物设计.pptx
- 最新网络营销工作总结.docx
- 中南大学工程项目管理第三章工程项目投资控制.pptx
- 热油系统安全运行措施.doc
- 计算机信息网络安全检查项目表.doc
- 小学教师计算机培训工作总结.docx
- 中国电信主要网络介绍.ppt
- 软件工程导论习题答桉.doc
- 楼宇自动化与系统集成解决方案--浙大中控.doc



- 1
- 2
前往页