您的位置:首页 > 其它

Mybatis框架-18:多表操作之一对多——添加操作

2019-06-08 23:09 435 查看

第一步:mapper

客户mapper,执行插入客户操作

[code]  void insertCustomer(Customer customer);

订单mapper,执行插入订单和更新订单的操作(更新订单就是要更新他的外键)

[code] void insertOrde(Order order);
[code]//更新订单,建立好外键,也就是这个订单是属于谁的
void updateCustId(@Param("cust_id") Integer cust_id, @Param("orderId") Integer orderId);

第二步:mapper.xml的sql语句

客户的mapper.xml

[code]<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

这里一个插入,一个更新,以为更新的时候需要主键,所以这里设置了已插入后就获取主键

[code] <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>

第三步:编写测试类

[code]@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();
}

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: