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

参考链接

参考链接

相关推荐
一定要AK2 小时前
Spring 入门核心笔记
java·笔记·spring
A__tao2 小时前
Elasticsearch Mapping 一键生成 Java 实体类(支持嵌套 + 自动过滤注释)
java·python·elasticsearch
KevinCyao2 小时前
java视频短信接口怎么调用?SpringBoot集成视频短信及回调处理Demo
java·spring boot·音视频
科技小花2 小时前
数据治理平台架构演进观察:AI原生设计如何重构企业数据管理范式
数据库·重构·架构·数据治理·ai-native·ai原生
一江寒逸2 小时前
零基础从入门到精通MySQL(中篇):进阶篇——吃透多表查询、事务核心与高级特性,搞定复杂业务SQL
数据库·sql·mysql
凯尔萨厮2 小时前
创建SpringWeb项目(Spring2.0)
spring·mvc·mybatis
D4c-lovetrain2 小时前
linux个人心得22 (mysql)
数据库·mysql
迷藏4942 小时前
**发散创新:基于Rust实现的开源合规权限管理框架设计与实践**在现代软件架构中,**权限控制(RBAC)** 已成为保障
java·开发语言·python·rust·开源
阿里小阿希3 小时前
CentOS7 PostgreSQL 9.2 升级到 15 完整教程
数据库·postgresql
荒川之神3 小时前
Oracle 数据仓库雪花模型设计(完整实战方案)
数据库·数据仓库·oracle