mybatis 插入返回主键

本文介绍如何在MyBatis中配置插入操作后返回主键的方法。通过使用<insert>元素的useGeneratedKeys属性及keyProperty属性实现自动生成主键并将其赋值给对象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mybatis 插入返回主键配置:

<insert id="insert" parameterType="com.cn.pojo.Sequence"
        useGeneratedKeys="true" keyProperty="id">
        INSERT
        INTO
        sequence
        <trim prefix="(" suffix=")" suffixOverrides=",">
            name,
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            #{name,jdbcType=VARCHAR},
        </trim>

    </insert>



### MyBatis 插入操作后回显主键的方法 当执行 `INSERT` 操作时,MyBatis 支持通过多种方式获取新生成的主键值。具体实现取决于所使用的数据库类型以及 ID 生成策略。 对于支持自动增长类型的数据库(如 MySQL),可以通过 `<selectKey>` 元素定义来捕获插入记录后的自增主键: ```xml <insert id="insertUser" parameterType="com.example.User"> <selectKey keyProperty="id" resultType="int" order="AFTER"> SELECT LAST_INSERT_ID() </selectKey> INSERT INTO users (name, age) VALUES (#{name}, #{age}) </insert> ``` 上述 XML 片段展示了如何利用 `<selectKey>` 来设置实体类中对应的字段属性 `keyProperty` 和预期的数据类型 `resultType`[^4]。 如果采用的是 Spring Boot 结合 MyBatis Generator 自动生成代码的方式,则可以在 Java 方法签名处声明返回类型为整数或者受影响行数,并确保 Mapper 接口方法能够接收并传递这个值给业务逻辑层处理[^1]。 另外,在某些情况下,也可以借助于 JDBC 的 `getGeneratedKeys()` 功能直接从 PreparedStatement 获取刚插入数据产生的主键值;这种方式不需要额外编写 SQL 查询语句即可完成相同功能[^2]。 #### 使用示例 下面是一个完整的例子展示怎样在一个 RESTful API 中保存日志条目并将新分配的请求 ID 返回给客户端: ```java @ResponseBody @RequestMapping(value = "/record", method = RequestMethod.POST) public Msg saveLogs(@RequestBody Record record){ // 执行前打印对象状态 System.out.println("Before Insert:" + record); // 调用 Service 层进行持久化存储 recordService.insertRecord(record); // 此刻 reqId 已经被填充了实际数值 int id = record.getReqId(); System.out.println("After Insert Req Id is :" + id ); return Msg.success().add("id", id); } ``` 此代码片段说明了在调用了 `insertRecord` 后,`reqId` 字段已经被正确设置了新的唯一标识符。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值