Springboot Data JPA implémente une à plusieurs requêtes de table d'association de plusieurs à un
Environnement de développement
Exigences fonctionnelles
Grâce à la relation d'association, tous les magasins de produits du magasin sont recherchés. Le magasin est un à plusieurs pour les produits, et le produit est nombreux à des magasins. Le Foreign Key Store_id existe sur le multi-côté. Utilisez l'instruction intra-connexion de la base de données.
Structure de table
tb_shop
tb_store
Classe d'entité, implémentée par annotation
1. Store Class Store.java
package com.gaolei.entity; import javax.persistence. *; import java.util.hashset; import java.util.set; / ** * créé par Gaolei le 2018/6/25. * / @ Entité @ table (name = "tb_store") Store de classe publique {@id @generatedValue (Strategy = GenerationType.Identity) Private Integer ID; // Numéro de chaîne de magasin Private String Name; // Nom de la boutique Adresse de chaîne privée; shops = new hashset <sh shop> (); // omettre les méthodes set () et get ();} Catégorie de produits Shop.Java
package com.gaolei.entity; import javax.persistence. *; import java.util.hashset; import java.util.set; / ** * créé par Gaolei le 2018/6/25. * / @ Entité @ table (name = "TB_SHOP") Boutique de classe publique {@id @generatedValue (Strategy = GenerationType.Identity) ID entier privé; // ID de produit Nom de la chaîne privée; // Nom du produit Int privé Prix; // Prix Product private int num; // Quantité de produit Info de chaîne privée; // Informations de produit @manytoone @joincomn (name = "store_id") // boutique privée de clé étrangère; // omettre set () et get () méthodes;} Stockao.java
L'interface CruDrepository hérite de l'interface du référentiel et a ajouté des méthodes simples telles que l'ajout, la suppression et la vérification. Il existe de nombreuses méthodes qui ont été encapsulées. Je ne le décrit pas ici. J'utiliserai Baidu pour effectuer des opérations complexes ici via des instructions HQL personnalisées.
package com.gaolei.dao; import com.gaolei.entity.store; import org.springframework.data.jpa.repository.query; import org.springframework.data.repository.crudepository; import org.springframework.stereotype.repository; import java.uil.list; Gaolei le 2018/6/25. * / @ Interface RepositoryPublic StoreDao étend CruDrepository <Store, Integer> {// cette méthode requête tous les produits en magasin id =? via une connexion en ligne @Query ("Sélectionnez Stick S à partir du magasin S Inner Join S.Shops Where S.ID =? 1") Liste <STOST> FindByshoplist (ID entier);} Stororservice.java
Implémentez la méthode en injectant Storedao par @Autowired
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.sterreotype.Controller; import; org.springframework.transaction.annotation.transactional; import java.util.list; / ** * créé par Gaolei le 2018/6/25. * / @ Contrôleur @ TransactionalPublic Class StoreService {@Autowired Private StoreDao StoreDao; / ** * Display Store Products * * / public List <store> findByShopList (INTER ID) {return storedao.findByshoplist (id); }} StoreAction.java
Mettre en œuvre une opération de données spécifique
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; importation. org.springframework.sterreotype.controller; import org.springframework.ui.model; import org.springframework.web.bind.annotation.requestmapping; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httSerplestre; java.util.arraylist; import java.util.list; / ** * créé par Gaolei le 2018/6/26. * / @ Contrôleur @ requestmapping ("/ store") classe publique StoreAction {@Autowired private StoreService StoreService; / ** * STORE_SHOP_MENU Affiche des produits de magasin * * / @RequestMapping ("showshop") public String showshop (HttpservletResponse Response, httpservletRequest request, modèle modèle) {String id = request.getParameter ("store_id"); // Obtenez le magasin avec id =? via l'instruction HQL et obtenez tous les produits sous la liste des magasins <store> list = stororservice.FindByshopList (Integer.ValueOf (ID)); // Le retourné est une collection de magasins, la classe de magasin et la classe de boutiques sont un à plusieurs et les magasins du magasin sont la liste <facte>. List <shop> shoplist = new ArrayList <smop> (); // cyclisme de traversée pour obtenir chaque boutique, ajoutez-les à une nouvelle liste <facte>, qui est utilisée pour afficher les données au premier plan. pour (Store Store: List) {System.out.println (Store.GetName ()); For (Shop Shop: Store.getShops ()) {System.out.println (shop.getName ()); shoplist.add (magasin); }} Model.AddAttribute ("List", Shoplist); return "admin / showshop"; }}Page de redirection
Magasins visualisés
Stockage
Le code frontal est omis, et l'essentiel est que l'instruction dans @Query ("******************") peut être utilisée pour obtenir des opérations complexes avec diverses connexions à la base de données.
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.