【项目实践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【注意名字的对应】

参考链接

参考链接

相关推荐
NCIN EXPE2 小时前
redis 使用
数据库·redis·缓存
MongoDB 数据平台2 小时前
为编码代理引入 MongoDB 代理技能和插件
数据库·mongodb
lUie INGA2 小时前
在2023idea中如何创建SpringBoot
java·spring boot·后端
极客on之路2 小时前
mysql explain type 各个字段解释
数据库·mysql
代码雕刻家2 小时前
MySQL与SQL Server的基本指令
数据库·mysql·sqlserver
lThE ANDE2 小时前
开启mysql的binlog日志
数据库·mysql
yejqvow122 小时前
CSS如何控制placeholder文字的颜色_使用--placeholder伪元素
jvm·数据库·python
oLLI PILO2 小时前
nacos2.3.0 接入pgsql或其他数据库
数据库
geBR OTTE2 小时前
SpringBoot中整合ONLYOFFICE在线编辑
java·spring boot·后端
m0_743623922 小时前
HTML怎么创建多语言切换器_HTML语言选择下拉结构【指南】
jvm·数据库·python