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

参考链接

参考链接

相关推荐
l***21784 分钟前
MySQL--》理解锁机制中的并发控制与优化策略
数据库·mysql·oracle
chenyuhao20247 分钟前
MySQL索引特性
开发语言·数据库·c++·后端·mysql
5***r93524 分钟前
SQL实现md5加密方法
数据库·sql
雨中飘荡的记忆24 分钟前
财务对账系统设计与实现
java
i***778025 分钟前
mysql 迁移达梦数据库出现的 sql 语法问题 以及迁移方案
数据库·sql·mysql
0***h94225 分钟前
使用 java -jar 命令启动 Spring Boot 应用时,指定特定的配置文件的几种实现方式
java·spring boot·jar
5***E68526 分钟前
mysql重置root密码(适用于5.7和8.0)
数据库·mysql·adb
q***697727 分钟前
使用 Qt 插件和 SQLCipher 实现 SQLite 数据库加密与解密
数据库·qt·sqlite
雨中飘荡的记忆27 分钟前
布式事务详解:从理论到实践(RocketMQ + Seata)
java·rocketmq
t***821127 分钟前
【Oracle11g SQL详解】日期和时间函数:SYSDATE、TO_DATE、TO_CHAR 等
数据库·sql