真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

利用mybatis如何實現(xiàn)一個一對多查詢功能

利用mybatis如何實現(xiàn)一個一對多查詢功能?針對這個問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

公司主營業(yè)務(wù):網(wǎng)站設(shè)計制作、網(wǎng)站設(shè)計、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊有機(jī)會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出淮陽免費做網(wǎng)站回饋大家。

1.需求分析:

在開發(fā)中會遇到這樣一個問題,查詢訂單信息,級聯(lián)查詢出用戶信息和訂單明細(xì)信息

2.sql語句實現(xiàn)

2.1確定主查詢表:訂單表
2.2確定關(guān)聯(lián)查詢表:用戶表, 訂單明細(xì)表

sql語句如下:

 select
  orders.*,
  t_user.address,
  t_user.name,
  t_user.brithday,
  orderdetail.id orderdetail_id,
  orderdetail.orderid,
  orderdetail.itemsid
  from
  orders,
  t_user,
  orderdetail
  where 
 orders.userid=t_user.id AND orderdetail.orderid=orders.id;

查詢結(jié)果如下:

利用mybatis如何實現(xiàn)一個一對多查詢功能

映射要求:

不能出現(xiàn)重復(fù)的訂單信息

3.編碼實現(xiàn)

在orders.java中添加屬性,List ordersDetails 。類比hibernate學(xué)習(xí),代碼如下:

public class Orders {
 private int id;
 private String note;
 private Date dateTime;
 private String number;
 private int userId;
 private User user;
 private List ordersDetails;//看這里
}

最終會將訂單信息映射到orders中,訂單所對應(yīng)的訂單明細(xì)映射到orders的ordersDetails集合中,從上面查詢結(jié)果圖中可以看出最終的訂單信息將為2條(orders信息不重復(fù)),每個訂單orders中的屬性存儲了該訂所對應(yīng)的訂單明細(xì)。

4.編寫mapper.java和mapper.xml文件

代碼如下:

package com.djp.config.mapper;

import com.djp.pojo.Orders;
import com.djp.pojo.OrdersCustom;

import java.util.List;

public interface OrdersCustomMapper {
 /**
  * 查詢訂單關(guān)聯(lián)查詢用戶信息和訂單明細(xì)信息
  *
  * @return
  */
 List findOrderAndOrderDetailResultMap();

 /**
  * 查詢訂單關(guān)聯(lián)查詢用戶信息
  *
  * @return
  */
 List findOrderUser() throws Exception;

 /**
  * 使用resultMap映射
  *
  * @return
  * @throws RuntimeException
  */
 List findOrderUserResultMap() throws RuntimeException;
}

對于mapper.xml的解釋加在了代碼中 ,如下:

<?xml version="1.0" encoding="UTF-8" ?>



 
 
  
  
   
  
   
   
   
   
  
 
 
 
 
 
  
  
  
  
  
  
  
  
   
   
   
   
   
   
  
 
 
 
 
 

代碼有點多,不怕得,下面的是之前的一對一的,注意繼承至之前寫好的resultMap。

5 寫測試代碼:

 /**
  * 查詢訂單關(guān)聯(lián)查詢用戶信息和訂單明細(xì)信息
  */
 @Test
 public void testFindOrderAndOrderDetailResultMap() {
  try {
   System.out.println("start.................");
   //通過得到的SqlSessionFactory打開回話sqlSession
   SqlSession sqlSession = SqlSessionFactory.openSession();
   //通過會話得到用戶的代理
   OrdersCustomMapper ordersCustomMapper = sqlSession.getMapper(OrdersCustomMapper.class);
   List list = ordersCustomMapper.findOrderAndOrderDetailResultMap();
    for (Orders item : list) {
    System.out.println("訂單+用戶+訂單明細(xì):"+item);
   }
  } catch (Exception e) {
   e.printStackTrace();
  }
 }

運行結(jié)果如下:

利用mybatis如何實現(xiàn)一個一對多查詢功能

從圖中可看出我們需要的訂單信息,關(guān)聯(lián)查詢出的用戶信息,關(guān)聯(lián)查詢出的訂單明細(xì)信息都出來了!

6 .總結(jié)

mybatis使用resultMap實現(xiàn)一對多查詢用collection對關(guān)聯(lián)查詢出的多條記錄映射到一個list集合中

關(guān)于利用mybatis如何實現(xiàn)一個一對多查詢功能問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識。


分享名稱:利用mybatis如何實現(xiàn)一個一對多查詢功能
網(wǎng)站URL:http://weahome.cn/article/iicses.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部