【项目实践day08】Mybatis向数据库中插入数据的时候返回主键值id

应用场景

  • 创建一个实体类(订单),现在需要将这个订单插入进数据库。
  • 但是在后续的业务逻辑中,需要用到这个订单的id(主键值)
    • 由于订单id一般都是自增的,且是插入数据库的时候才会给到的值
    • 所以需要在插入数据库之后返回id(主键值)【直接写在实体对象中】

代码实现

  1. 在serviceImpl中调用orderMapper实现订单的插入操作

    1. 这里传入的orders是一个实例化好的订单对象
    2. .insert(orders);
  2. 在orderMapper这个接口中,定义insert的抽象方法

    java 复制代码
     @Mapper
    	public interface OrderMapper {
    	
    	    /**
    	     * @param orders:
    	     * @return void
    	     * @description 插入订单数据
    	     */
    	    void insert(Orders orders);
    	}
  3. 在orderMapper.xml中书写插入语句

    xml 复制代码
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
    <mapper namespace="com.sky.mapper.OrderMapper">
    
    <!--    插入订单数据-->
    <!--    需要返回主键值,这里的id对应的是订单实体类中的属性-->
        <insert id="insert" parameterType="Orders" useGeneratedKeys="true" keyProperty="id">
            insert into orders
            (number, status, user_id, address_book_id, order_time, checkout_time, pay_method, pay_status, amount, remark,
             phone, address, consignee, estimated_delivery_time, delivery_status, pack_amount, tableware_number,
             tableware_status)
            values (#{number}, #{status}, #{userId}, #{addressBookId}, #{orderTime}, #{checkoutTime}, #{payMethod},
                    #{payStatus}, #{amount}, #{remark}, #{phone}, #{address}, #{consignee},
                    #{estimatedDeliveryTime}, #{deliveryStatus}, #{packAmount}, #{tablewareNumber}, #{tablewareStatus})
        </insert>
    </mapper>
    1. 注意:<insert id="" parameterType="Orders" useGeneratedKeys="true" keyProperty="id">
    2. insert对应的是orderMapper中的insert方法
    3. parameterType="Orders" useGeneratedKeys="true" keyProperty="id"是在向数据库中插入对象后,返回id(主键值)的具体实现。这里的id应当是实体对象中的属性id【注意名字的对应】

参考链接

参考链接

相关推荐
CV_J6 小时前
安装kibana
java·elasticsearch·spring cloud·docker·容器
码农水水8 小时前
国家电网Java面试被问:TCP的BBR拥塞控制算法原理
java·开发语言·网络·分布式·面试·wpf
木风小助理8 小时前
PostgreSQL基础知识——DDL深度解析
数据库·postgresql
hanqunfeng8 小时前
(四十四)Redis8 新增的数据类型 -- Vector Set
数据库·redis·缓存
qq_336313938 小时前
java基础-网络编程-TCP
java·网络·tcp/ip
咕噜咕噜啦啦8 小时前
Java期末习题速通
java·开发语言
盐真卿9 小时前
python2
java·前端·javascript
梦梦代码精9 小时前
BuildingAI vs Dify vs 扣子:三大开源智能体平台架构风格对比
开发语言·前端·数据库·后端·架构·开源·推荐算法
一嘴一个橘子10 小时前
mybatis - 动态语句、批量注册mapper、分页插件
java
组合缺一10 小时前
Json Dom 怎么玩转?
java·json·dom·snack4