时间:2021-05-20
SpringBoot Data JPA实现 一对多、多对一关联表查询
开发环境
功能需求
通过关联关系查询商店Store中所有的商品Shop,商店对商品一对多,商品对商店多对一,外键 store_id存在于多的一方。使用数据库的内连接语句。
表结构
tb_shop
tb_store
实体类,通过注解实现
1.商店类Store.java
商品类Shop.java
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. */@Repositorypublic 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@Transactionalpublic 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"; }}前台页面跳转
查看的店铺
店铺商品
省略前端代码,主要的是@Query("****************")中语句使用,配合数据库的各种连接能实现复杂的操作。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
前一阵子接手了一个使用SpringBoot和spring-data-jpa开发的项目,后期新加入一个小伙伴,表示jpa相比mybatis太难用,多表联合的查询写
什么是JPA一种规范,并非ORM框架,也就是ORM上统一的规范spring-boot-starter-data-jpa是SpringBoot的项目,包含了spr
本文演示了SpringBoot下,实用Spring-Data-Jpa来实现CRUD操作,视图层采用Freemarker这里我们先把application.pro
问题:最近在使用新框架SpringBoot+shiro+spring-data-jpa时,为了体验下spring自带的热部署工具的便捷,于是引入了org.spr
本文实例讲述了Yii2.0表关联查询的方法。分享给大家供大家参考,具体如下:你可以使用ActiveRecord来进行关联查询(比如,从A表读取数据时把关联的B表