课程目标

1、一对多关联关系
2、多对多关联关系

一对多
首先先用逆向生成工具生成t_hibernate_order、t_hibernate_order_item
这两张表对应的model与mapper

HbookVo

package com.hw.ssm.model.vo;import com.hw.ssm.model.Category;
import com.hw.ssm.model.Hbook;import java.util.ArrayList;
import java.util.List;public class HbookVo extends Hbook {private List<Category> categories=new ArrayList<>();public List<Category> getCategories() {return categories;}public void setCategories(List<Category> categories) {this.categories = categories;}}

CategoryVo

package com.hw.ssm.model.vo;import com.hw.ssm.model.Category;
import com.hw.ssm.model.Hbook;import java.util.ArrayList;
import java.util.List;public class CategoryVo extends Category {private List<Hbook> hbooks=new ArrayList<>();public List<Hbook> getHbooks() {return hbooks;}public void setHbooks(List<Hbook> hbooks) {this.hbooks = hbooks;}
}

OrderVo

package com.hw.ssm.model.vo;import com.hw.ssm.model.Order;
import com.hw.ssm.model.OrderItem;import java.util.ArrayList;
import java.util.List;public class OrderVo extends Order {private List<OrderItem> orderItems = new ArrayList<>();public List<OrderItem> getOrderItems() {return orderItems;}public void setOrderItems(List<OrderItem> orderItems) {this.orderItems = orderItems;}
}

OrderItemVo

package com.hw.ssm.model.vo;import com.hw.ssm.model.Order;
import com.hw.ssm.model.OrderItem;public class OrderItemVo extends OrderItem {private Order order;public Order getOrder() {return order;}public void setOrder(Order order) {this.order = order;}
}

OrderMapper.xml

<resultMap id="OrderVoMap" type="com.hw.ssm.model.vo.OrderVo" ><result property="orderId" column="order_id"></result><result property="orderNo" column="order_no"></result><collection property="orderItems" ofType="com.hw.ssm.model.OrderItem"><result property="orderItemId" column="order_item_id"></result><result property="oid" column="oid"></result><result property="productId" column="product_id"></result><result property="quantity" column="quantity"></result></collection>
</resultMap><select id="queryOrderVoByOrderId" resultMap="OrderVoMap" parameterType="java.lang.Integer">select * from t_hibernate_order o,t_hibernate_order_item oiwhere o.order_id = oi.oidand o.order_id = #{orderId}
</select>

OrderMapper.java

package com.hw.ssm.mapper;import com.hw.ssm.model.Order;
import com.hw.ssm.model.vo.OrderVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;import java.util.List;public interface OrderMapper {int deleteByPrimaryKey(Integer orderId);int insert(Order record);int insertSelective(Order record);Order selectByPrimaryKey(Integer orderId);int updateByPrimaryKeySelective(Order record);int updateByPrimaryKey(Order record);List<OrderVo> selectByOrderId(@Param("orderId") Integer orderId);
}

OrderItemMapper.xml

 <resultMap id="OrderItemVoMap" type="com.hw.ssm.model.vo.OrderItemVo"><result property="orderItemId" column="order_item_id"></result><result property="productId" column="product_id"></result><result property="quantity" column="quantity"></result><result property="oid" column="oid"></result><!--<result property="orderItems"></result>--><association property="order" javaType="com.hw.ssm.model.Order"><result property="orderId" column="order_id"></result><result property="orderNo" column="order_no"></result></association></resultMap><select id="selectByOrderItemId" resultMap="OrderItemVoMap" parameterType="java.lang.Integer" >select * from t_hibernate_order o,t_hibernate_order_item oiwhere o.order_id=oi.oidand oi.order_item_id = #{orderItemId}</select>

OrderItemMapper.java

package com.hw.mapper;import com.hw.model.OrderItem;
import com.hw.vo.OrderItemVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;import java.util.List;
@Repository
public interface OrderItemMapper {int deleteByPrimaryKey(Integer orderItemId);int insert(OrderItem record);int insertSelective(OrderItem record);OrderItem selectByPrimaryKey(Integer orderItemId);int updateByPrimaryKeySelective(OrderItem record);int updateByPrimaryKey(OrderItem record);List<OrderItemVo> selectByorderItemId(@Param("orderItemId") Integer orderItemId);
}

OneToManyService

package com.hw.ssm.service;import com.hw.ssm.model.vo.OrderItemVo;
import com.hw.ssm.model.vo.OrderVo;import java.util.List;public interface OneToManyService {List<OrderVo> selectByOrderId(Integer orderId);List<OrderItemVo> selectByOrderItemId(Integer orderItemId);
}

OneToManyServiceImpl

package com.hw.ssm.service.impl;import com.hw.ssm.mapper.OrderItemMapper;
import com.hw.ssm.mapper.OrderMapper;
import com.hw.ssm.model.vo.OrderItemVo;
import com.hw.ssm.model.vo.OrderVo;
import com.hw.ssm.service.OneToManyService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;@Service
public class OneToManyServiceImpl implements OneToManyService {@Autowiredprivate OrderMapper orderMapper;@Autowiredprivate OrderItemMapper orderItemMapper;@Overridepublic List<OrderVo> selectByOrderId(Integer orderId) {return orderMapper.selectByOrderId(orderId);}@Overridepublic List<OrderItemVo> selectByOrderItemId(Integer orderItemId) {return orderItemMapper.selectByOrderItemId(orderItemId);}
}

OneToManyServiceImplTest

package com.hw.ssm.service.impl;import com.hw.ssm.model.OrderItem;
import com.hw.ssm.model.vo.OrderItemVo;
import com.hw.ssm.model.vo.OrderVo;
import com.hw.ssm.service.OneToManyService;
import com.hw.ssm.test.SpringJunitBaseTest;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;import java.util.List;public class OneToManyServiceImplTest extends SpringJunitBaseTest {@Autowiredprivate OneToManyService oneToManyService;@Testpublic void selectByOrderId() {List<OrderVo> orderVos = oneToManyService.selectByOrderId(8);OrderVo orderVo = orderVos.get(0);System.out.println(orderVo);for (OrderItem orderItem : orderVo.getOrderItems()) {System.out.println(orderItem);}}@Testpublic void selectByOrderItemId() {List<OrderItemVo> orderItemVos = oneToManyService.selectByOrderItemId(36);OrderItemVo orderItemVo = orderItemVos.get(0);System.out.println(orderItemVo);System.out.println(orderItemVo.getOrder());}}

多对多

首先先用逆向生成工具生成t_hibernate_book、t_hibernate_book_category、t_hibernate_category,这两张表对应的model与mapper

HbookVo

package com.hw.ssm.model.vo;import com.hw.ssm.model.Category;
import com.hw.ssm.model.Hbook;import java.util.ArrayList;
import java.util.List;public class HbookVo extends Hbook {private List<Category> categories=new ArrayList<>();public List<Category> getCategories() {return categories;}public void setCategories(List<Category> categories) {this.categories = categories;}
}

CategoryVo

package com.hw.ssm.model.vo;import com.hw.ssm.model.Category;
import com.hw.ssm.model.Hbook;import java.util.ArrayList;
import java.util.List;public class CategoryVo extends Category {private List<Hbook> hbooks = new ArrayList<>();public List<Hbook> getHbooks() {return hbooks;}public void setHbooks(List<Hbook> hbooks) {this.hbooks = hbooks;}
}
 <resultMap id="HbookVoMap" type="com.hw.ssm.model.vo.HbookVo"><result property="bookId" column="book_id"></result><result property="bookName" column="book_name"></result><result property="price" column="price"></result><!--<result property="orderItems"></result>--><collection property="categories" ofType="com.hw.ssm.model.Category"><result property="categoryId" column="category_id"></result><result property="categoryName" column="category_name"></result></collection></resultMap><resultMap id="CategoryVoMap" type="com.hw.ssm.model.vo.CategoryVo"><result property="categoryId" column="category_id"></result><result property="categoryName" column="category_name"></result><!--<result property="orderItems"></result>--><collection property="hbooks" ofType="com.hw.ssm.model.Hbook"><result property="bookId" column="book_id"></result><result property="bookName" column="book_name"></result><result property="price" column="price"></result></collection></resultMap><select id="selectByBid" resultMap="HbookVoMap" parameterType="java.lang.Integer" >select * from t_hibernate_book b,t_hibernate_book_category bc,
t_hibernate_category c where b.book_id=bc.bid and bc.cid=c.category_id
and b.book_id=#{bid}</select><select id="selectByCid" resultMap="CategoryVoMap" parameterType="java.lang.Integer" >select * from t_hibernate_book b,t_hibernate_book_category bc,
t_hibernate_category c where b.book_id=bc.bid and bc.cid=c.category_id
and c.category_id=#{cid}</select>

HbookMapper.jav

package com.hw.ssm.mapper;import com.hw.ssm.model.Hbook;
import com.hw.ssm.model.vo.HbookVo;
import org.apache.ibatis.annotations.Param;public interface HbookMapper {int deleteByPrimaryKey(Integer bookId);int insert(Hbook record);int insertSelective(Hbook record);Hbook selectByPrimaryKey(Integer bookId);int updateByPrimaryKeySelective(Hbook record);int updateByPrimaryKey(Hbook record);HbookVo selectByBid(@Param("bid")Integer bid);
}

CategoryMapper.java

package com.hw.ssm.mapper;import com.hw.ssm.model.Category;
import com.hw.ssm.model.vo.CategoryVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;@Repository
public interface CategoryMapper {int deleteByPrimaryKey(Integer categoryId);int insert(Category record);int insertSelective(Category record);Category selectByPrimaryKey(Integer categoryId);int updateByPrimaryKeySelective(Category record);int updateByPrimaryKey(Category record);CategoryVo selectByCid(@Param("cid") Integer cid);
}

ManyToManyService

package com.hw.ssm.service;import com.hw.ssm.model.vo.CategoryVo;
import com.hw.ssm.model.vo.HbookVo;public interface ManyToManyService {CategoryVo selectByCid(Integer cid);HbookVo selectByBid(Integer bid);
}

ManyToManyServiceImpl

package com.hw.ssm.service.impl;import com.hw.ssm.mapper.CategoryMapper;
import com.hw.ssm.mapper.HBookMapper;
import com.hw.ssm.model.vo.CategoryVo;
import com.hw.ssm.model.vo.HbookVo;
import com.hw.ssm.service.ManyToManyService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service
public class ManyToManyServiceImpl implements ManyToManyService {@Autowiredprivate HBookMapper hBookMapper;@Autowiredprivate CategoryMapper categoryMapper;@Overridepublic CategoryVo selectByCid(Integer cid) {return categoryMapper.selectByCid(cid);}@Overridepublic HbookVo selectByBid(Integer bid) {return hBookMapper.selectByBid(bid);}
}

ManyToManyServiceImplTest

package com.hw.ssm.service.impl;import com.hw.SpringBaseTest;
import com.hw.ssm.model.Category;
import com.hw.ssm.model.HBook;
import com.hw.ssm.model.vo.CategoryVo;
import com.hw.ssm.model.vo.HbookVo;
import com.hw.ssm.service.ManyToManyService;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;public class ManyToManyServiceImplTest extends SpringBaseTest {
@Autowired
private ManyToManyService manyToManyService;@Testpublic void selectByBid() {HbookVo hbookVo = manyToManyService.selectByBid(8);System.out.println(hbookVo);for (Category category : hbookVo.getCategories()) {System.out.println(category);}}@Testpublic void selectByCid() {CategoryVo categoryVo = this.manyToManyService.selectByCid(8);System.out.println(categoryVo);for (HBook gethBook : categoryVo.gethBooks()) {System.out.println(gethBook);}}}

mybatis关联关系映射相关推荐

  1. MyBatis 关系映射XML配置

    关系映射 在我看来这些实体类就没啥太大关联关系,不就是一个sql语句解决的问题,直接多表查询就完事,程序将它设置关联就好 xml里面配置也是配置了sql语句,下面给出几个关系的小毛驴(xml) 一对多 ...

  2. MyBatis关联映射例题

    在确保可运行项目能够正确无误地运行之后,再严格照着教程的步骤,对代码模仿一遍.模仿过程难免代码有出入,导致无法得到期望的运行结果,此时此刻通过比较正确答案 ( 可运行项目 ) 和自己的代码,来定位问题 ...

  3. Mybatis关联映射;Mybatis注解

    Mybatis关联映射 Mybatis关联映射的用途: 在实际的开发过程中,对于数据库的操作除了单表外往往会涉及到多张表,这些操作在面向对象中就涉及到了对象与对象之间的关联关系.针对多表之间的操作,M ...

  4. Hibernate关联关系映射

    1.  Hibernate关联关系映射 1.1.  one to one <class name="Person"> <id name="id" ...

  5. Hibernate关联关系映射实例速查

    Hibernate关联关系映射实例速查 Hibernate的映射关系很多,也比较复杂,也很容易忘记.这个基本上占据了Hibernate学习的七成时间.熟悉这些映射模型,需要大量的实践才能掌握.下面是我 ...

  6. Hibernate 实体关联关系映射----总结

    http://lavasoft.blog.51cto.com/62575/39398 Hibernate 实体关联关系映射----总结 花了三天的业余时间,终于写完了Hibernate关联关系映射的所 ...

  7. Spring集成Mybatis配置映射文件方法详解

    Spring ORM模块集成Mybatis使用到了mybatis-spring,在配置mybatis映射文件的时候,一般不直接在Mybatis的配置文件里进行配置,而会在Spring的配置文件里使用M ...

  8. 使用集合映射和关联关系映射_使用R进行基因ID映射

    使用集合映射和关联关系映射 Inter-conversion of gene ID's is the most important aspect enabling genomic and proteo ...

  9. (转)Hibernate框架基础——多对多关联关系映射

    http://blog.csdn.net/yerenyuan_pku/article/details/52756536 多对多关联关系映射 多对多的实体关系模型也是很常见的,比如学生和课程的关系.一个 ...

最新文章

  1. linux下git的简单使用
  2. 大一就会这么多,还在问有没有前途? | 每日趣闻
  3. 虚拟机开启mysql密码报错_Linux虚拟机下mysql 5.7安装配置方法图文教程
  4. el-date-picker怎样获取选择的时间范围值并判断是否大于7天
  5. SQL语句来查询今天、昨天、7天内、30天的数据,经典!
  6. Binary Search二分法搜索C++程序
  7. 有啥区别?谷歌Chrome浏览器图标8年来首次更新
  8. Eclipse用法和技巧十二:快速复制一行
  9. 东芝移动硬盘拆解图_拆解报告:小米USB 3.0分线器XMFXQ01QM
  10. 什么是交换机?它有哪些作用?
  11. 英语听力计算机教室,每日英语听力电脑版|每日英语听力 v9.2.0 PC客户端
  12. HTML从入门到入土 - CSS基础
  13. 10105 - Polynomial Coefficients
  14. PhotoShop纸张大小
  15. 808通讯协议技术规范消息ID:0x0704数据分析,后附go代码
  16. Linux下 Android adb驱动
  17. VueJs笔记01-视频小码哥
  18. USYD悉尼大学DATA1002 详细作业解析Module6
  19. 华南农业大学计算机学院院长,华南农业大学外国语学院院长何高大
  20. HashMap遍历和使用

热门文章

  1. Oracle CloudWorld 2022 - Oracle智能分析与机器学习新动向
  2. HTML+CSS实例:简单朴素的个人简历模板(HTML表格使用+css样式渲染)
  3. 【2012年腾讯俱乐部ACM赛新手组1000】我水平弱爆了—Love Message
  4. java虚拟机手机下载_java虚拟机
  5. Lodop打印控件打印
  6. 打怪升级之如何发送HEX进制的数据出去
  7. Haroopad安装过程中出现某种问题的解决方法
  8. 全国计算机erp应用专业人才,浅谈ERP在企业管理中的运用
  9. 有n个人围成一圈,顺序排号,从第一个人开始报数(1-3报数),凡是报数为3的人退出圈子,问最后留下的人原来的编号是多少?
  10. C++ 进程退出后,子线程还会存在吗?