mybatis--insert语句id回显

本文介绍使用MyBatis框架实现商品信息及扩展信息的数据库插入操作,通过mapper.xml配置文件与Java代码相结合,实现商品基本信息与扩展信息的自动填充与插入,并返回操作结果。

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

 

mapper.xml

  <insert id="insert" parameterType="cn.bufanli.pojo.TbGoods" >
    <selectKey  keyProperty='id' resultType='java.lang.Long' order='AFTER'  >
        select LAST_INSERT_ID() AS id
    </selectKey>
       新增代码略
  </insert>

代码案例

/**
      * 增加
      * @param goods 商品基本信息,商品扩展信息组合实体类
      * @return
      */
     @Override
     public Message add(Goods goods) {
          //统一数据返回
          Message message = new Message();
          //添加状态为未审核
          goods.getTbGoods().setAuditStatus("0");
          try {
               //新增商品信息新增成功后的id会回先到商品信息实体当中,直接get取即可
               int i = goodsMapper.insert(goods.getTbGoods());
               //将商品基本表的ID给商品扩展表
               goods.getTbGoodsDesc().setGoodsId(goods.getTbGoods().getId());
               i=tbGoodsDescMapper.insert(goods.getTbGoodsDesc());
               if (i > 0) {
                    message.setMessage("新增商品成功");
                    message.setCode("200");
               } else {
                    message.setMessage("新增商品失败");
                    message.setCode("500");
               }
          } catch (Exception e) {
               message.setMessage("新增商品失败");
               message.setCode("500");
          }
          return message;
     }

 

### 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、付费专栏及课程。

余额充值