12-多对一添加操作(添加新客户及对应的新订单)
多對(duì)一添加操作
?
場(chǎng)景:現(xiàn)在想要添加一個(gè)新客戶對(duì)應(yīng)一個(gè)新訂單,那么要怎么來添加呢?
分析:由于添加訂單時(shí),客戶對(duì)訂單是一對(duì)多的關(guān)系,所以添加訂單的時(shí)候必須要指明一位客戶。
要同時(shí)添加新客戶以及一個(gè)新訂單,并且兩者是對(duì)應(yīng)關(guān)系,那么應(yīng)當(dāng)先將客戶添加進(jìn)來,再添加訂單,同時(shí)這個(gè)訂單的外鍵(cust_id)指向了剛剛添加的客戶的主鍵(cust_id)。
CustomerMapper 接口中添加一個(gè)方法:
/*保存客戶*/ public void insertCustomer(Customer customer);CustomerMapper 映射文件中,寫SQL:
關(guān)鍵點(diǎn)在于將 useGeneratedKeys 設(shè)置為 true,然后將 cust_id 賦給添加的對(duì)象。
此時(shí)可以添加一位新客戶,并且我們可以獲取它的 id。
public void test3(){SqlSession sqlSession = MybatisUtils.openSession();CustomerMapper customerMapper = sqlSession.getMapper(CustomerMapper.class);OrderMapper orderMapper = sqlSession.getMapper(OrderMapper.class);Customer customer = new Customer();customer.setCust_name("新客戶6666");customer.setCust_phone("666666");customer.setEmail("666@666.com");customer.setCust_profession("新職業(yè)666");/*先添加客戶 獲取客戶生成的id 再去添加訂單*/customerMapper.insertCustomer(customer);System.out.println(customer);sqlSession.commit();sqlSession.close();}添加了客戶后,我們便可以獲取客戶生成的 id,然后就可以添加訂單。
OrderMapper.java 接口中添加一個(gè)新方法:
/*保存訂單*/ public void insertOrder(Order order);OrderMapper.xml 映射文件中添加寫 SQL:
<!--保存訂單--> <insert id="insertOrder" parameterType="order">insert into `order` (order_name,order_num,cust_id)values (#{order_name},#{order_num},#{customer.cust_id}) </insert>測(cè)試代碼:
public void test3(){SqlSession sqlSession = MybatisUtils.openSession();CustomerMapper customerMapper = sqlSession.getMapper(CustomerMapper.class);OrderMapper orderMapper = sqlSession.getMapper(OrderMapper.class);Order order = new Order();order.setOrder_name("新訂單666");order.setOrder_num("666666666");Customer customer = new Customer();customer.setCust_name("新客戶6666");customer.setCust_phone("666666");customer.setEmail("666@666.com");customer.setCust_profession("新職業(yè)666");order.setCustomer(customer);/*先添加客戶 獲取客戶生成的id 再去添加訂單*/customerMapper.insertCustomer(customer);System.out.println(customer);/*保存訂單*/orderMapper.insertOrder(order);sqlSession.commit();sqlSession.close();}運(yùn)行效果:先添加了一名新客戶,然后添加了一個(gè)新訂單,并且這個(gè)訂單指向了新客戶。
總結(jié)
以上是生活随笔為你收集整理的12-多对一添加操作(添加新客户及对应的新订单)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎样缩小照片到合适尺寸电脑如何缩小图片
- 下一篇: 13-一对多左连接查询分步查询(查询所有