mybatis关联关系映射
课程目标
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关联关系映射相关推荐
- MyBatis 关系映射XML配置
关系映射 在我看来这些实体类就没啥太大关联关系,不就是一个sql语句解决的问题,直接多表查询就完事,程序将它设置关联就好 xml里面配置也是配置了sql语句,下面给出几个关系的小毛驴(xml) 一对多 ...
- MyBatis关联映射例题
在确保可运行项目能够正确无误地运行之后,再严格照着教程的步骤,对代码模仿一遍.模仿过程难免代码有出入,导致无法得到期望的运行结果,此时此刻通过比较正确答案 ( 可运行项目 ) 和自己的代码,来定位问题 ...
- Mybatis关联映射;Mybatis注解
Mybatis关联映射 Mybatis关联映射的用途: 在实际的开发过程中,对于数据库的操作除了单表外往往会涉及到多张表,这些操作在面向对象中就涉及到了对象与对象之间的关联关系.针对多表之间的操作,M ...
- Hibernate关联关系映射
1. Hibernate关联关系映射 1.1. one to one <class name="Person"> <id name="id" ...
- Hibernate关联关系映射实例速查
Hibernate关联关系映射实例速查 Hibernate的映射关系很多,也比较复杂,也很容易忘记.这个基本上占据了Hibernate学习的七成时间.熟悉这些映射模型,需要大量的实践才能掌握.下面是我 ...
- Hibernate 实体关联关系映射----总结
http://lavasoft.blog.51cto.com/62575/39398 Hibernate 实体关联关系映射----总结 花了三天的业余时间,终于写完了Hibernate关联关系映射的所 ...
- Spring集成Mybatis配置映射文件方法详解
Spring ORM模块集成Mybatis使用到了mybatis-spring,在配置mybatis映射文件的时候,一般不直接在Mybatis的配置文件里进行配置,而会在Spring的配置文件里使用M ...
- 使用集合映射和关联关系映射_使用R进行基因ID映射
使用集合映射和关联关系映射 Inter-conversion of gene ID's is the most important aspect enabling genomic and proteo ...
- (转)Hibernate框架基础——多对多关联关系映射
http://blog.csdn.net/yerenyuan_pku/article/details/52756536 多对多关联关系映射 多对多的实体关系模型也是很常见的,比如学生和课程的关系.一个 ...
最新文章
- linux下git的简单使用
- 大一就会这么多,还在问有没有前途? | 每日趣闻
- 虚拟机开启mysql密码报错_Linux虚拟机下mysql 5.7安装配置方法图文教程
- el-date-picker怎样获取选择的时间范围值并判断是否大于7天
- SQL语句来查询今天、昨天、7天内、30天的数据,经典!
- Binary Search二分法搜索C++程序
- 有啥区别?谷歌Chrome浏览器图标8年来首次更新
- Eclipse用法和技巧十二:快速复制一行
- 东芝移动硬盘拆解图_拆解报告:小米USB 3.0分线器XMFXQ01QM
- 什么是交换机?它有哪些作用?
- 英语听力计算机教室,每日英语听力电脑版|每日英语听力 v9.2.0 PC客户端
- HTML从入门到入土 - CSS基础
- 10105 - Polynomial Coefficients
- PhotoShop纸张大小
- 808通讯协议技术规范消息ID:0x0704数据分析,后附go代码
- Linux下 Android adb驱动
- VueJs笔记01-视频小码哥
- USYD悉尼大学DATA1002 详细作业解析Module6
- 华南农业大学计算机学院院长,华南农业大学外国语学院院长何高大
- HashMap遍历和使用
热门文章
- Oracle CloudWorld 2022 - Oracle智能分析与机器学习新动向
- HTML+CSS实例:简单朴素的个人简历模板(HTML表格使用+css样式渲染)
- 【2012年腾讯俱乐部ACM赛新手组1000】我水平弱爆了—Love Message
- java虚拟机手机下载_java虚拟机
- Lodop打印控件打印
- 打怪升级之如何发送HEX进制的数据出去
- Haroopad安装过程中出现某种问题的解决方法
- 全国计算机erp应用专业人才,浅谈ERP在企业管理中的运用
- 有n个人围成一圈,顺序排号,从第一个人开始报数(1-3报数),凡是报数为3的人退出圈子,问最后留下的人原来的编号是多少?
- C++ 进程退出后,子线程还会存在吗?