目录
- 一对多关联关系
- 多对多关联关系
首先先用逆向生成工具生成t_hibernate_order、t_hibernate_order_item 这两张表对应的model与mapper
t_hibernate_order:

t_hibernate_order_item :

知道表之后我们直接生成相对应的对象:
先把这几个地方改一下:(如果不懂的如何生成通用的增删改查可以看看这里,里面有些哦)

还有下面的那个表名也要改一下:
generatorConfig.xml:
- generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
- "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" >
- <generatorConfiguration>
-
- <properties resource="jdbc.properties"/>
-
-
- <classPathEntry location="D:\\maven\\mvn_repository\\mysql\\mysql-connector-java\\5.1.44\\mysql-connector-java-5.1.44.jar"/>
-
-
- <context id="infoGuardian">
-
- <commentGenerator>
- <property name="suppressAllComments" value="true"/>
- <property name="suppressDate" value="true"/>
- commentGenerator>
-
-
- <jdbcConnection driverClass="${jdbc.driver}"
- connectionURL="${jdbc.url}" userId="${jdbc.username}" password="${jdbc.password}"/>
-
-
- <javaTypeResolver>
-
- <property name="forceBigDecimals" value="false"/>
- javaTypeResolver>
-
-
-
-
- <javaModelGenerator targetPackage="com.ps.ssm.model"
- targetProject="src/main/java">
-
- <property name="enableSubPackages" value="false"/>
-
- <property name="constructorBased" value="true"/>
-
- <property name="trimStrings" value="false"/>
-
- <property name="immutable" value="false"/>
- javaModelGenerator>
-
-
- <sqlMapGenerator targetPackage="com.ps.ssm.mapper"
- targetProject="src/main/java">
-
- <property name="enableSubPackages" value="false"/>
- sqlMapGenerator>
-
-
-
-
-
- <javaClientGenerator targetPackage="com.ps.ssm.mapper"
- targetProject="src/main/java" type="XMLMAPPER">
-
- <property name="enableSubPackages" value="false"/>
- javaClientGenerator>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <table schema="" tableName="t_hibernate_order" domainObjectName="Order"
- enableCountByExample="false" enableDeleteByExample="false"
- enableSelectByExample="false" enableUpdateByExample="false">
- table>
- <table schema="" tableName="t_hibernate_order_item " domainObjectName="Item"
- enableCountByExample="false" enableDeleteByExample="false"
- enableSelectByExample="false" enableUpdateByExample="false">
- table>
-
- context>
- generatorConfiguration>
-
生成后:

OrderBiz:
- package com.ps.ssm.biz;
-
- import com.ps.ssm.model.Book;
- import com.ps.ssm.model.BookVo;
- import com.ps.ssm.model.Order;
- import com.ps.ssm.model.vo.OrderVo;
- import com.ps.ssm.util.PageBean;
- import org.apache.ibatis.annotations.Param;
-
- import java.util.List;
- import java.util.Map;
-
- public interface OrderBiz {
- int deleteByPrimaryKey(Integer orderId);
-
- int insert(Order record);
-
- int insertSelective(Order record);
-
- Order selectByPrimaryKey(Integer orderId);
-
- OrderVo queryOrderVoByOrderId(Integer orderId);
-
- int updateByPrimaryKeySelective(Order record);
-
- int updateByPrimaryKey(Order record);
- }
-
ItemBiz
- package com.ps.ssm.biz;
-
- import com.ps.ssm.model.Item;
- import com.ps.ssm.model.vo.ItemVo;
- import org.apache.ibatis.annotations.Param;
-
- public interface ItemBiz {
- int deleteByPrimaryKey(Integer ItemId);
-
- int insert(Item record);
-
- int insertSelective(Item record);
-
- Item selectByPrimaryKey(Integer ItemId);
-
- ItemVo queryItemVoByItemId(Integer ItemId);
-
- int updateByPrimaryKeySelective(Item record);
-
- int updateByPrimaryKey(Item record);
- }
OrderBizImpl
- package com.ps.ssm.biz.impl;
-
- import com.ps.ssm.biz.OrderBiz;
- import com.ps.ssm.mapper.OrderMapper;
- import com.ps.ssm.model.Order;
- import com.ps.ssm.model.vo.OrderVo;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
-
- @Service
- public class OrderBizImpl implements OrderBiz {
- @Autowired
- private OrderMapper orderMapper;
- @Override
- public int deleteByPrimaryKey(Integer orderId) {
- return 0;
- }
-
- @Override
- public int insert(Order record) {
- return 0;
- }
-
- @Override
- public int insertSelective(Order record) {
- return 0;
- }
-
- @Override
- public Order selectByPrimaryKey(Integer orderId) {
- return null;
- }
-
- @Override
- public OrderVo queryOrderVoByOrderId(Integer orderId) {
- return orderMapper.queryOrderVoByOrderId(orderId);
- }
-
- @Override
- public int updateByPrimaryKeySelective(Order record) {
- return 0;
- }
-
- @Override
- public int updateByPrimaryKey(Order record) {
- return 0;
- }
- }
ItemBizImpl:
- package com.ps.ssm.biz.impl;
-
- import com.ps.ssm.biz.ItemBiz;
- import com.ps.ssm.mapper.ItemMapper;
- import com.ps.ssm.model.Item;
- import com.ps.ssm.model.vo.ItemVo;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
-
- @Service
- public class ItemBizImpl implements ItemBiz {
- @Autowired
- private ItemMapper ItemMapper;
- @Override
- public int deleteByPrimaryKey(Integer ItemId) {
- return 0;
- }
-
- @Override
- public int insert(Item record) {
- return 0;
- }
-
- @Override
- public int insertSelective(Item record) {
- return 0;
- }
-
- @Override
- public Item selectByPrimaryKey(Integer ItemId) {
- return null;
- }
-
- @Override
- public ItemVo queryOrderItemVoByOrderItemId(Integer ItemId) {
- return ItemMapper.queryOrderItemVoByItemId(ItemId);
- }
-
- @Override
- public int updateByPrimaryKeySelective(Item record) {
- return 0;
- }
-
- @Override
- public int updateByPrimaryKey(Item record) {
- return 0;
- }
- }
OrderVo :
- package com.ps.vo;
-
- import com.ps.model.Order;
- import com.ps.model.OrderItem;
-
- import java.util.ArrayList;
- import java.util.List;
-
- public class OrderVo extends Order {
- private List
orderItems = new ArrayList<>(); -
- public List
getOrderItems() { - return orderItems;
- }
-
- public void setOrderItems(List
orderItems) { - this.orderItems = orderItems;
- }
-
-
- @Override
- public String toString() {
- return "OrderVo{" +
- "orderItems=" + orderItems +
- '}';
- }
- }
ItemVo :
-
- package com.ps.vo;
-
- import com.ps.model.Order;
- import com.ps.model.OrderItem;
-
- public class ItemVo extends OrderItem {
- private Order order;
-
- public Order getOrder() {
- return order;
- }
-
- public void setOrder(Order order) {
- this.order = order;
- }
-
-
- @Override
- public String toString() {
- return "OrderItemVo{" +
- "order=" + order +
- '}';
- }
- }
两个表之间的关系:
1、一个订单有多个订单详情表
2、一个订单详情只有一个订单
比如一本书籍有多个类别,多个类别对多本书
多对多相当于两个一对多

- <resultMap id="HbookVoMap" type="com.ps.model.vo.HbookVo">
- <result property="bookId" column="book_id">result>
- <result property="bookName" column="book_name">result>
- <collection property="categories" ofType="com.ps.model.Category">
- <result property="categoryId" column="category_id">result>
- <result property="categoryName" column="category_name">result>
- collection>
- resultMap>
-
- <resultMap id="CategoryVoMap" type="com.ps.model.vo.CategoryVo">
- <result property="categoryId" column="category_id">result>
- <result property="categoryName" column="category_name">result>
- <collection property="hbooks" ofType="com.ps.model.Hbook">
- <result property="bookId" column="book_id">result>
- <result property="bookName" column="book_name">result>
- collection>
- resultMap>
-
- <select id="queryByBookId" 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 = #{bookId}
- select>
-
-
- <select id="queryByCid" 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>
HbookCategoryBizImpl
- package com.ps.biz.impl;
-
- import com.ps.biz.HbookCategoryBiz;
- import com.ps.mapper.HbookCategoryMapper;
- import com.ps.model.HbookCategory;
- import com.ps.model.vo.CategoryVo;
- import com.ps.model.vo.HbookVo;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
-
- /**
- * @author 彭于晏
- * @create 2022-08-15 23:30
- */
- @Service
- public class HbookCategoryBizImpl implements HbookCategoryBiz {
- @Autowired
- private HbookCategoryMapper hbookCategoryMapper;
-
-
-
- @Override
- public CategoryVo queryByCid(Integer cid) {
- return hbookCategoryMapper.queryByCid(cid);
- }
-
- @Override
- public HbookVo queryByBookId(Integer bookId) {
- return hbookCategoryMapper.queryByBookId(bookId);
- }
- }
HbookCategoryBizImplTest:
- package com.ps.biz.impl;
-
- import com.ps.biz.HbookCategoryBiz;
- import com.ps.model.vo.CategoryVo;
- import com.ps.model.vo.HbookVo;
- import org.junit.Test;
- import org.junit.runner.RunWith;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.test.context.ContextConfiguration;
- import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-
- /**
- * @author 彭于晏
- * @create 2022-08-15 0:33
- */
- @RunWith(SpringJUnit4ClassRunner.class)
- @ContextConfiguration(locations={"classpath:applicationContext-mybatis.xml"})
- public class HbookCategoryBizImplTest {
- @Autowired
- private HbookCategoryBiz hbookCategoryBiz;
-
- @Test
- public void queryByCid() {
- CategoryVo categoryVo = hbookCategoryBiz.queryByCid(8);
- System.out.println(categoryVo);
- categoryVo.getHbooks().forEach(System.out::println);
- }
-
- @Test
- public void queryByBookId() {
- HbookVo hbookVo = hbookCategoryBiz.queryByBookId(8);
- System.out.println(hbookVo);
- hbookVo.getCategories().forEach(System.out::println);
- }
- }
queryByBookId结果:

queryByCid效果:

好啦!今天的分享就到这里,我们下次再见!