這篇文章主要介紹了SpringBoot Data JPA關聯(lián)表查詢的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
城陽網站建設公司成都創(chuàng)新互聯(lián)公司,城陽網站設計制作,有大型網站制作公司豐富經驗。已為城陽成百上千家提供企業(yè)網站建設服務。企業(yè)網站搭建\成都外貿網站制作要多少錢,請找那個售后服務好的城陽做網站的公司定做!
SpringBoot Data JPA實現(xiàn) 一對多、多對一關聯(lián)表查詢
開發(fā)環(huán)境
IDEA 2017.1
Java1.8
SpringBoot 2.0
MySQL 5.X
功能需求
通過關聯(lián)關系查詢商店Store中所有的商品Shop,商店對商品一對多,商品對商店多對一,外鍵 store_id存在于多的一方。使用數(shù)據(jù)庫的內連接語句。
表結構
tb_shop
tb_store
實體類,通過注解實現(xiàn)
1.商店類Store.java
package com.gaolei.Entity; import javax.persistence.*; import java.util.HashSet; import java.util.Set; /** * Created by GaoLei on 2018/6/25. */ @Entity @Table(name = "tb_store") public class Store { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id;//商鋪號 private String name;//商鋪姓名 private String address;//商鋪地址 private int tel ;//商鋪聯(lián)系 private String info;//商鋪信息 @OneToMany(cascade = CascadeType.ALL,mappedBy = "store") private Setshops = new HashSet (); // 省略set()和get()方法; }
商品類Shop.java
package com.gaolei.Entity; import javax.persistence.*; import java.util.HashSet; import java.util.Set; /** * Created by GaoLei on 2018/6/25. */ @Entity @Table(name = "tb_shop") public class Shop { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id ; //商品id private String name;//商品名 private int price;// 商品價格 private int num;//商品數(shù)量 private String info;//商品信息 @ManyToOne @JoinColumn(name = "store_id")//外鍵 private Store store; // 省略set()和get()方法; }
StoreDao.java
CrudRepository 接口繼承于 Repository 接口,并新增了簡單的增、刪、查等方法。其中封裝好了很多的方法,這里不再概述,自行百度,這里通過自定義HQL語句完成復雜的操作。
package com.gaolei.Dao; import com.gaolei.Entity.Store; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.CrudRepository; import org.springframework.stereotype.Repository; import java.util.List; /** * Created by GaoLei on 2018/6/25. */ @Repository public interface StoreDao extends CrudRepository{ //此方法通過內連接查詢店鋪id=?中的所有商品 @Query("select distinct s from Store s inner join s.shops where s.id = ?1") List findByShopList(Integer id); }
StoreService.java
通過@Autowired注入StoreDao來實現(xiàn)方法
package com.gaolei.Service; import com.gaolei.Dao.StoreDao; import com.gaolei.Entity.Shop; import com.gaolei.Entity.Store; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.transaction.annotation.Transactional; import java.util.List; /** * Created by GaoLei on 2018/6/25. */ @Controller @Transactional public class StoreService { @Autowired private StoreDao storeDao; /** * 展示商店商品 * */ public ListfindByShopList(Integer id){ return storeDao.findByShopList(id); } }
StoreAction.java
實現(xiàn)具體數(shù)據(jù)操作操作
package com.gaolei.Action; import com.gaolei.Entity.Shop; import com.gaolei.Entity.Store; import com.gaolei.Service.ShopService; import com.gaolei.Service.StoreService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.ArrayList; import java.util.List; /** * Created by GaoLei on 2018/6/26. */ @Controller @RequestMapping("/store") public class StoreAction { @Autowired private StoreService storeService; /** * Store_shop_menu展示店鋪商品 * */ @RequestMapping("showShop") public String showShop(HttpServletResponse response ,HttpServletRequest request,Model model){ String id = request.getParameter("store_id"); //通過HQL語句拿到id=?的商鋪,并拿到該店鋪下所有的商品 Listlist = storeService.findByShopList(Integer.valueOf(id)); //返回的為一個Store集合,Store類和Shop類為一對多,Store下的shops為List 。 List shopList = new ArrayList (); //循環(huán)遍歷拿到每一個shop,添加到一個新的List 中,用于將數(shù)據(jù)在前臺展示。 for (Store store:list){ System.out.println(store.getName()); for (Shop shop: store.getShops()) { System.out.println(shop.getName()); shopList.add(shop); } } model.addAttribute("list",shopList); return "admin/showShop"; } }
前臺頁面跳轉
查看的店鋪
店鋪商品
省略前端代碼,主要的是@Query("****************")中語句使用,配合數(shù)據(jù)庫的各種連接能實現(xiàn)復雜的操作。
感謝你能夠認真閱讀完這篇文章,希望小編分享的“SpringBoot Data JPA關聯(lián)表查詢的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關知識等著你來學習!