SpringBoot Data JPA는 일대일의 다중 연관성 테이블 쿼리를 구현합니다
개발 환경
기능적 요구 사항
협회 관계를 통해 상점의 모든 제품 상점이 검색됩니다. 이 매장은 제품을 위해 일대일이며 제품은 상점에서 1 ~ 1 개입니다. 외국 Key Store_id는 다중 측에 존재합니다. 데이터베이스의 연결 문을 사용하십시오.
테이블 구조
TB_SHOP
TB_STORE
주석에 의해 구현되는 엔티티 클래스
1. 상점 클래스 스토어 .java
package com.gaolei.entity; import javax.persistence.*; import java.util.hashset; import java.util.set;/*** Gaolei가 2018/6/25에 작성했습니다. */ @entity @table (name = "tb_store") public class store {@id @generatedvalue (rosption = generationtype.identity) 개인 정수 ID; // 상점 번호 개인 문자열 이름; // 상점 이름 개인 문자열 주소; // Shop Private int tel; // Shop Contact inforct @onetomany (cascade = cascadeType.all) = New Hashset <shop> (); // set () 및 get () 메소드를 생략합니다.} 제품 카테고리 Shop.java
package com.gaolei.entity; import javax.persistence.*; import java.util.hashset; import java.util.set;/*** Gaolei가 2018/6/25에 작성했습니다. */ @entity @table (name = "tb_shop") 공개 클래스 샵 {@id @generatedvalue (worthor = generationtype.identity) 개인 정수 ID; // 제품 ID 개인 문자열 이름; // 제품 이름 개인 int 가격; // 제품 가격 개인 int num; // 제품 수량 개인 문자열 정보; // 제품 정보 @ManytoOne @joincolumn (name = "store_id") // 외국 키 개인 상점 저장소; // set () 및 get () 메소드를 생략합니다.} storedao.java
Crudrepository 인터페이스는 저장소 인터페이스에서 상속되고 추가, 삭제 및 확인과 같은 간단한 방법을 추가했습니다. 캡슐화 된 많은 방법이 있습니다. 나는 여기서 그것을 설명하지 않을 것입니다. Baidu를 사용하여 사용자 정의 HQL 문을 통해 복잡한 작업을 완료 할 것입니다.
package com.gaolei.dao; import com.gaolei.entity.store; import org.springframework.data.jpa.repository.query; import org.springframework.data.repository; import org.spramework.stereotyp.repository; import java.util.list; 2018/6/25. */@repositorypublic interface storedao는 crudrepository <store, integer>를 확장합니다. {//이 메소드는 매장 ID =에서 모든 제품을 쿼리합니다. 인라인 연결을 통해 @Query ( "상점에서 S.ID =? 1"에서 S.Shops에서 S.Shops에서 고유 한 S를 선택하십시오 <Store> FindByShopList (Integer ID);} storeservice.java
@autowired에 의해 Storedao를 주입하여 방법을 구현하십시오
package com.gaolei.service; import com.gaolei.dao.store.Store.Store.Store.Store.Shop; import com.gaolei.entity.shop; import com.gaolei.entity.store; import org.springframework.beans.ack.annotation.autowired; import org.springframework.stereotyp.controller; org.springframework.transaction.annotation.transactional; import java.util.list;/*** Gaolei가 2018/6/25에 작성했습니다. */@controller@transactionAlpublic 클래스 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.spramework.beans.beans.beans.annotation.autoweart; spram.sprontroller; org.springframework.ui.model; import org.springframework.web.bind.annotation.requestmapping; import javax.servlet.http.htttp.httpervletrequest; import javax.servlet.http.httpservletresponse; import java.util.arraylist; java.util.list;/*** Gaolei가 2018/6/26에 작성했습니다. */@controller@requestmapping ( "/store") public class storeaction {@autowired private storeservice storeservice; / *** store_shop_menu는 상점 제품*/ @requestmapping ( "showshop") public string showshop (httpservletResponse 응답, httpservletrequest 요청, 모델 모델) {String id = request.getParameter ( "store_id"); // id =가있는 상점을 얻습니다. HQL 명세서를 통해 매장 목록 <store> list = storeservice.findbyshoplist (integer.valueof (id)) 아래에 모든 제품을 가져옵니다. // 반품은 상점 컬렉션이며, 상점 클래스 및 상점 수업은 일대일이며 상점의 상점은 <shop> 목록입니다. List <shop> shoplist = new arraylist <shop> (); // 순환 트래버스 각 상점을 가져 오려면 새로운 목록 <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 ( "목록", 상점); "Admin/Showshop"을 반환합니다. }}리디렉션 페이지
보았던 상점
상점 제품
프론트 엔드 코드는 생략되며 가장 중요한 것은 @Query ( "*********************")의 명령문을 사용하여 데이터베이스에 대한 다양한 연결을 가진 복잡한 작업을 달성 할 수 있다는 것입니다.
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.