Springboot Data JPAは、1対1の、多くのアソシエーションテーブルクエリを実装します
開発環境
機能要件
協会関係を通じて、店内のすべての製品ショップが検索されます。店は製品の1対多で、製品は店舗用に多数1対1です。外部キーストア_IDはマルチサイドに存在します。データベースの接続内ステートメントを使用します。
テーブル構造
TB_SHOP
TB_STORE
エンティティクラス、注釈によって実装
1。ストアクラスstore.java
パッケージcom.gaolei.entity; import javax.persistence。*; import java.util.hashset; Import java.util.set;/***は2018/6/25にGaoleiによって作成されました。 */ @entity @table(name = "tb_store")public class store {@id @generatedValue(Strategy = GenerationType.identity)Private Integer ID; // Shop Number Private String name; // Shop Address Private int Tel; // Shop Contact Info; shops = new Hashset <Shop>(); // set()を省略し、get()メソッド;}製品カテゴリshop.java
パッケージcom.gaolei.entity; import javax.persistence。*; import java.util.hashset; Import java.util.set;/***は2018/6/25にGaoleiによって作成されました。 */ @entity @table(name = "tb_shop")public class shop {@id @generatedValue(Strategy = GenerationType.identity)Private Integer ID; // Product IDプライベート文字列名; // set()を省略し、get()メソッド;} storedao.java
Crudrepositoryインターフェイスは、リポジトリインターフェイスから継承され、追加、削除、チェックなどの簡単な方法を追加しました。カプセル化された多くの方法があります。ここでは概説しません。 Baiduを使用して、カスタムHQLステートメントを通じて複雑な操作を完了します。
パッケージcom.gaolei.dao; import com.gaolei.entity.store; Import org.springframework.data.jpa.repository.query; import org.springframework.data.repository.crudrepository; import org.springframework.steriepototory; 2018/6/25のガオレイ。 */@RepositoryPublicインターフェイスSTOREDAOはcrudRepository <store、integer> {//この方法をストアid =?インライン接続を介して@query( "Store s Innine Join S.ShopsからS.Id =?1"からselectsを選択します<Store> findByShoplist(integer id);} StoreService.java
@autowiredによる保存型を注入してメソッドを実装します
パッケージ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.stereope.controller; org.springframework.transaction.annotation.transactional; Import java.util.list;/***は2018/6/25にGaoleiによって作成されました。 */@controller@transactionalpublic class storeService {@autowired private storedao storedao; / *** STORE製品を表示**/ public List <Store> FindByShoplist(Integer ID){return Storedao.findbyShoplist(id); }} StoreAction.java
特定のデータ操作を実装します
パッケージcom.gaolei.action; import com.gaolei.entity.shop; Import com.gaolei.entity.store; Import com.gaolei.service.shopservice; Import com.gaolei.service.storeervice; Import org.springframework.beans.factory.Annotation.Autowired; springframework.stereotype.controller; Import org.springframework.ui.model; import org.springframework.web.bind.annotation.requestmapping; Import javax.servlet.http.httpservletrequest; java.util.arraylist; Import java.util.list;/***は2018/6/26にGaoleiによって作成されました。 */@controller@requestMapping( "/store")public class storeAction {@autowired private storeService storeService; / *** store_shop_menuディスプレイストア製品***/ @RequestMapping( "Showshop")public String Showshop(httpservletResponse Response、httpservletrequest request、モデルモデル){文字列id = request.getParameter( "store_id"); // id =でストアを取得しますか? HQLステートメントを使用して、すべての製品をストアリスト<Store> list = storeService.findbyShoplist(integer.valueof(id)); //返されたのは店のコレクションで、店のクラスとショップのクラスは1対多で、店の下の店はリスト<Shop>です。 List <Shop> Shoplist = new ArrayList <Shop>(); // Cycling Traversal各ショップを取得するには、前景のデータを表示するために使用される新しいリスト<Shop>に追加します。 for(store store:list){system.out.println(store.getName()); for(ショップショップ:store.getShops()){System.out.println(shop.getName()); shoplist.add(shop); }} model.addattribute( "list"、shoplist); 「admin/showshop」を返します。 }}リダイレクトページ
閲覧した店
製品を保存します
フロントエンドコードは省略されており、主なことは、@Query( "********************")のステートメントを使用して、データベースへのさまざまな接続で複雑な操作を実現できることです。
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。