中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SpringBoot Data JPA關聯表查詢的示例分析

發布時間:2021-07-08 11:00:46 來源:億速云 閱讀:173 作者:小新 欄目:編程語言

這篇文章主要介紹了SpringBoot Data JPA關聯表查詢的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

SpringBoot Data JPA實現 一對多、多對一關聯表查詢

開發環境

  1. IDEA 2017.1

  2. Java1.8

  3. SpringBoot 2.0

  4. MySQL 5.X

功能需求

通過關聯關系查詢商店Store中所有的商品Shop,商店對商品一對多,商品對商店多對一,外鍵 store_id存在于多的一方。使用數據庫的內連接語句。

表結構

SpringBoot Data JPA關聯表查詢的示例分析

tb_shop

SpringBoot Data JPA關聯表查詢的示例分析

tb_store

實體類,通過注解實現

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 ;//商鋪聯系

  private String info;//商鋪信息

  @OneToMany(cascade = CascadeType.ALL,mappedBy = "store")
  private Set<Shop> shops = new HashSet<Shop>();
  // 省略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;//商品數量

  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<Store,Integer> {

 
  //此方法通過內連接查詢店鋪id=?中的所有商品
  @Query("select distinct s from Store s inner join s.shops where s.id = ?1")
  List<Store> findByShopList(Integer id);
}

StoreService.java

通過@Autowired注入StoreDao來實現方法

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 List<Store> findByShopList(Integer id){
    return storeDao.findByShopList(id);
  }
}

StoreAction.java

實現具體數據操作操作

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=?的商鋪,并拿到該店鋪下所有的商品
    List<Store> list = storeService.findByShopList(Integer.valueOf(id));
    //返回的為一個Store集合,Store類和Shop類為一對多,Store下的shops為List<Shop>。
    List<Shop> shopList = new ArrayList<Shop>();
//循環遍歷拿到每一個shop,添加到一個新的List<Shop>中,用于將數據在前臺展示。
    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";
  }
}

前臺頁面跳轉

SpringBoot Data JPA關聯表查詢的示例分析

查看的店鋪

SpringBoot Data JPA關聯表查詢的示例分析

店鋪商品

省略前端代碼,主要的是@Query("****************")中語句使用,配合數據庫的各種連接能實現復雜的操作。

感謝你能夠認真閱讀完這篇文章,希望小編分享的“SpringBoot Data JPA關聯表查詢的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

甘南县| 城固县| 比如县| 湘西| 红河县| 治县。| 京山县| 法库县| 清原| 宝清县| 新巴尔虎右旗| 柳河县| 若尔盖县| 体育| 彭泽县| 长葛市| 兰州市| 青阳县| 安溪县| 四会市| 万源市| 镇巴县| 桑日县| 彭州市| 延川县| 江口县| 始兴县| 新昌县| 牡丹江市| 长丰县| 青冈县| 舟曲县| 丁青县| 巨野县| 临海市| 沙湾县| 怀宁县| 古浪县| 宁远县| 富裕县| 平安县|