应用场景
- 创建一个实体类(订单),现在需要将这个订单插入进数据库。
- 但是在后续的业务逻辑中,需要用到这个订单的id(主键值)
- 由于订单id一般都是自增的,且是插入数据库的时候才会给到的值
- 所以需要在插入数据库之后返回id(主键值)【直接写在实体对象中】
代码实现
-
在serviceImpl中调用orderMapper实现订单的插入操作
- 这里传入的orders是一个实例化好的订单对象
.insert(orders);
-
在orderMapper这个接口中,定义insert的抽象方法
java@Mapper public interface OrderMapper { /** * @param orders: * @return void * @description 插入订单数据 */ void insert(Orders orders); }
-
在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>
- 注意:
<insert id="" parameterType="Orders" useGeneratedKeys="true" keyProperty="id">
insert
对应的是orderMapper
中的insert
方法parameterType="Orders" useGeneratedKeys="true" keyProperty="id"
是在向数据库中插入对象后,返回id(主键值)的具体实现。这里的id应当是实体对象中的属性id
【注意名字的对应】
- 注意: