多表查詢封裝

表1前端

表2

表1中的"category_id"對應表2中的主鍵id

前端要求根據表1中的"category_id"查詢出表2中的"name"並返回到頁面sql

  • 第一次寫的時候是作了兩次查詢,查了兩個表封裝對象放到一個List裏面,這樣寫很不合理並且很醜,返回的是兩個表的全部數據
  • 發現不合理以後,就用了左鏈接查詢,查詢結果
    這樣就要在表1的實體類裏面加一個字段"name"並查詢後封裝進去

而後就是在mapper.xml裏面作對應的封裝

獲得最後要的結果

============================================================bash

2019.4.15更新app

  • 此次項目查詢須要聯4張表查詢 查詢的sql很快就寫出來了,使用內鏈接
SELECT
	p1.id,p1.brand_id,p1.name "商品名稱",
	p2.NAME "商品分類二級",
	p4.NAME "商品分類一級",
	p3.vertify_man "審覈人",
	p3.STATUS "審覈狀態",
	p3.detail "審覈詳情"
FROM
	pms_product p1,
	pms_product_category p2,
	pms_product_vertify_record p3,
	pms_product_category p4 
WHERE
	p1.product_category_id = p2.id 
	AND p1.id = p3.id 
	AND p2.parent_id = p4.id
	AND p1.id = 1;
複製代碼

查詢結果 spa

在MyBatis中用resultMap自定義結果集,封裝這四個表的查詢結果

由於另外表的字段很少並且是基於商品表(pms_product)加上的,因此要在商品表的實體類上加上對應的字段,上面就是在商品類裏面直接加了,這樣等於修改原來的實體類,我的感受不是很好,因而就另外寫了一個類繼繼承商品表的實體類code

這樣就能夠在PmsProductDetails類裏面寫其餘表對應的字段也不會對原來的商品表作修改

mapper.xmlcdn

  • 不過這個仍是今天才解決的,上週六一天都沒搞定,仍是本身太笨了 開始是這樣寫的

  • 而後這樣查出來的都是以第一個name查出的值封裝的

  • 出現這個問題後,一直想是否是查詢方法不合適形成的,就想着用子查詢,因爲沒寫出來子查詢就沒弄
  • 週一上班發現能夠用別名區分啊,哈哈

  • 來看最後的結果

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息