一、背景
有的时候需要返回插入值后DB自动增长生成的记录ID,在Mybatis的 环境下如何做呢?
二、代码示例
<insert id="insert" parameterType="com.qunar.fax.model.qunar.entry.FaxSendNotify" useGeneratedKeys="true" keyProperty="id"> <selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id"> SELECT LAST_INSERT_ID() AS ID </selectKey> INSERT INTO fax_send_notify( header_action, taskId, tel_number, send_datetime, duration, fax_status, remote_id, error_msg, connect_speed, file_size, pages, status, send_pages, create_time, callback_time, retry_count, source, version ) VALUE( #{headerAction}, #{taskId}, #{telNumber}, #{sendDatetime}, #{duration}, #{faxStatus}, #{remoteId}, #{errorMsg}, #{connectSpeed}, #{fileSize}, #{pages}, #{status}, #{sendPages}, #{createTime}, #{callBackTime}, #{retryCount}, #{source}, #{version} ) </insert>
运行之后,能够自动将ID赋值到对象FaxSendNotify的id属性里面,so easy!
补充一句,这是Mysql db下的示例
相关推荐
在`<insert>`标签内设置`useGeneratedKeys="true"`,MyBatis会尝试获取数据库自动生成的主键值。在MySQL中,执行`INSERT`语句后,可以通过`LAST_INSERT_ID()`函数获取最新插入行的主键值。MyBatis会将这个值自动设置...
当主键类型为整型并且设置了自增属性时,MybatisPlus会在插入数据后自动返回主键值。有两种方式可以获取这个值: 1. 使用`@TableId`注解:在实体类中,你可以通过在主键字段上添加`@TableId`注解来声明主键,并指定...
Mybatis提供了一种便捷的方式,允许我们在插入数据后返回自动生成的主键值。以下将详细介绍如何在Mybatis中实现这一功能。 首先,你需要在Mapper的XML文件中对`<insert>`标签进行配置。关键属性是`useGeneratedKeys...
这是因为 MP 的通用方法能够正确执行,将新生成的主键值回填到实体类的相应属性中。 总结来说,当使用 MyBatis Plus 插入数据时遇到主键未返回的问题,应检查以下几点: 1. 确保实体类中的主键字段已正确标注为自增...
当执行插入操作后,MyBatis 会自动将数据库生成的主键值填充到插入对象的 `id` 属性中。在 Java 代码中,我们可以直接访问这个属性来获取新插入记录的 ID,如下所示: ```java @Override public int insert...
在对应的Java代码中,当你调用`sqlSession.insert("insertUser", user)`方法插入一条记录后,`user.getId()`就会返回数据库自动生成的主键值。这是因为MyBatis通过`useGeneratedKeys`和`keyProperty`属性与数据库...
在执行`insertAndGetId`方法后,由于我们设置了`keyProperty="userId"`,MyBatis会将生成的主键值自动赋值给User对象的`userId`属性。因此,`user.getUserId()`会返回插入后的主键ID。 通过这种方式,我们可以轻松...
2. **insert**:用于定义插入语句,可以获取自增主键值。 3. **update**:用于定义更新语句。 4. **delete**:用于定义删除语句。 **三、实体类(Entity Class)** 实体类是Java对象,代表数据库中的表,用于封装...
这样MySQL会在插入数据时自动分配并设置主键值,但同样不会将这个值返回给插入的对象。 3. **插入后获取自增主键值** 如果需要在插入数据后获取自增的主键值,MyBatis提供了`<selectKey>`元素来实现这一功能。这...
- `<insert>`:定义插入语句,同样需要指定id和返回值,如果插入成功,MyBatis会返回自动生成的主键值。 - `<update>`:更新语句,id对应方法名,参数通常通过注解@Param传递。 - `<delete>`:删除语句,用法与`...
在MyBatis中,当你执行一个插入(insert)操作时,通常默认情况下,MyBatis不会返回新插入记录的主键值,而是返回插入的记录条数。然而,在某些业务场景下,我们可能需要获取到新插入记录的主键,以便进行后续的操作...
通过设置`IdType.AUTO`,MybatisPlus会在插入数据时自动处理数据库的自增ID,然后将生成的主键值返回给插入的对象。无论是通过Service层的`saveOrUpdate`方法还是Mapper层的自定义`insert`方法,都能轻松实现这一...
当使用自增主键时,通常在数据库层面设置,MyBatis或MyBatis-Plus会自动处理插入后的主键值。如果需要联合主键,可以使用多个`@Id`注解或者自定义的复合主键类。 MyBatis-Plus是MyBatis的一个扩展,它提供了更丰富...
需要注意的是,如果你的表中有自增主键,可能需要在插入之前先获取主键值。这里使用了`<selectKey>`标签来获取序列的下一个值,确保每个插入的记录都有唯一的主键。 总之,当在Oracle数据库中使用MyBatis进行批量...
在这个例子中,`order_id`是预先计算好的,Mybatis不会尝试获取自动生成的主键值。 此外,Mybatis还支持动态SQL,通过`if`、`choose`、`when`、`otherwise`等标签,我们可以根据条件灵活地构造`insert`语句。例如,...
插入操作完成后,MyBatis会自动处理主键的生成策略,如果数据库支持自增主键,MyBatis会自动获取生成的主键值。 2. **删除操作(Delete)**:同样,删除操作也需要定义一个Mapper接口方法,并在XML文件中写好对应的...
插入数据后,MyBatis会自动将新生成的主键值设置到对应的Java对象属性上。你可以直接从对象中读取这个值,无需额外的查询。 6. **MyBatis注解方式**: 如果你更倾向于使用注解,可以使用`@Options`注解配合`@...
3. **主键自增与回填**:对于主键自增的表,MyBatis_Plus 可以自动处理插入后的主键值,无需手动获取。 4. **分页查询**:MyBatis_Plus 内置了分页插件,能够方便地实现物理分页和逻辑分页,避免了手动编写复杂的...
3. **<insert>**:定义插入数据的 SQL 语句,可以返回自动生成的主键值。 4. ****:定义更新数据的 SQL 语句。 5. ****:定义删除数据的 SQL 语句。 【MyBatis注解】 除了 XML 映射文件,MyBatis 也支持在实体类和...