第一步:mapper
客户mapper,执行插入客户操作
void insertCustomer(Customer customer);
订单mapper,执行插入订单和更新订单的操作(更新订单就是要更新他的外键)
void insertOrde(Order order);
//更新订单,建立好外键,也就是这个订单是属于谁的
void updateCustId(@Param("cust_id") Integer cust_id, @Param("orderId") Integer orderId);
第二步:mapper.xml的sql语句
客户的mapper.xml
<insert id="insertCustomer" parameterType="Customer" useGeneratedKeys="true" keyProperty="cust_id" keyColumn="cust_id">
insert into `customer` (cust_name,cust_profession,cust_phone,email) values (#{cust_name},#{cust_profession},#{cust_phone},#{email})
</insert>
订单的mapper.xml
这里一个插入,一个更新,以为更新的时候需要主键,所以这里设置了已插入后就获取主键
<insert id="insertOrde" parameterType="com.ctbu.domain.Order" useGeneratedKeys="true" keyColumn="orderId" keyProperty="orderId">
insert into `order` (orderName,orderNum,orderCustId) values (#{orderName},#{orderNum},#{customer.cust_id})
</insert>
<update id="updateCustId">
update `order` set `orderCustId`=#{cust_id} where `orderId`=#{orderId};
</update>
第三步:编写测试类
@Test
public void test8(){
SqlSession session = MyUtils.openSession();
CustomerMapper mapper = session.getMapper(CustomerMapper.class);
OrderMapper orderMapper = session.getMapper(OrderMapper.class);
//创建客户
Customer customer = new Customer();
customer.setCust_name("步惊云");
//创建订单一
Order order = new Order();
order.setOrderName("天猫订单");
//创建订单二
Order order1 = new Order();
order1.setOrderName("京东订单");
//将订单放入用户的订单集合中
customer.getOrders().add(order);
customer.getOrders().add(order1);
//保存数据
mapper.insertCustomer(customer);
orderMapper.insertOrde(order);
orderMapper.insertOrde(order1);
//更新关系
for (Order order2 : customer.getOrders()) {
orderMapper.updateCustId(customer.getCust_id(),order2.getOrderId());
}
session.commit();
session.close();
}