目录
- <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="OrderItem"
- enableCountByExample="false" enableDeleteByExample="false"
- enableSelectByExample="false" enableUpdateByExample="false">
- table>
- "1.0" encoding="UTF-8" ?>
- mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
- <mapper namespace="com.zq.ssm.mapper.OrderMapper" >
- <resultMap id="BaseResultMap" type="com.zq.ssm.model.Order" >
- <constructor >
- <arg column="order_id" jdbcType="VARCHAR" javaType="java.lang.String" />
- <arg column="order_no" jdbcType="VARCHAR" javaType="java.lang.String" />
- constructor>
- resultMap>
-
- <resultMap id="OrdervVoMap" type="com.zq.ssm.model.vo.OrdervVo" >
- <result column="order_id" property="orderId">result>
- <result column="order_no" property="orderNo">result>
- <collection property="orderItems" ofType="com.zking.ssm.model.OrderItem">
- <result column="order_item_id" property="orderItemId">result>
- <result column="product_id" property="productId">result>
- <result column="quantity" property="quantity">result>
- <result column="oid" property="oid">result>
- collection>
- resultMap>
-
- <insert id="insert" parameterType="com.zq.ssm.model.Order" >
- insert into t_hibernate_order (order_id, order_no)
- values (#{orderId,jdbcType=VARCHAR}, #{orderNo,jdbcType=VARCHAR})
- insert>
-
- <select id="queryOrderVoByOrderId" resultMap="OrdervVoMap" parameterType="java.lang.Integer">
- select * from t_hibernate_order o,t_hibernate_order_item oi
- where o.order_id = oi.oid
- and o.order_id = #{orderId}
- select>
- <insert id="insertSelective" parameterType="com.zq.ssm.model.Order" >
- insert into t_hibernate_order
- <trim prefix="(" suffix=")" suffixOverrides="," >
- <if test="orderId != null" >
- order_id,
- if>
- <if test="orderNo != null" >
- order_no,
- if>
- trim>
- <trim prefix="values (" suffix=")" suffixOverrides="," >
- <if test="orderId != null" >
- #{orderId,jdbcType=VARCHAR},
- if>
- <if test="orderNo != null" >
- #{orderNo,jdbcType=VARCHAR},
- if>
- trim>
- insert>
- mapper>
- package com.zq.ssm.model.vo;
-
- import com.zq.ssm.model.Order;
- import com.zq.ssm.model.OrderItem;
-
- import java.util.List;
-
- /**
- * @author张强
- * @site www.zq.com
- * @create 2022-08-16 12:49
- */
- public class OrderVo extends Order {
-
- //通过订单号查询本次订单的详细信息及对应的所有订单项信息
- private List
orderItems; -
- public List
getOrderItems() { - return orderItems;
- }
-
- public void setOrderItems(List
orderItems) { - this.orderItems = orderItems;
- }
- }
- package com.zq.ssm.model.vo;
-
- import com.zq.ssm.model.Order;
- import com.zq.ssm.model.OrderItem;
-
- /**
- * @author张强
- * @site www.zq.com
- * @create 2022-08-16 12:51
- */
- public class OrderItemVo extends OrderItem {
- private Order order;
-
- public Order getOrder() {
- return order;
- }
-
- public void setOrder(Order order) {
- this.order = order;
- }
- }
给实体类添加注解@Data(相当于添加了set/get方法,同时添加了tostring方法)
- package com.zq.ssm.model;
-
- import lombok.Data;
-
- @Data
- public class Order {
- private String orderId;
-
- private String orderNo;
- }
OrderItem也是如此
- package com.zq.ssm.biz;
-
- import com.zq.ssm.model.Order;
- import com.zq.ssm.model.vo.OrderVo;
-
- public interface OrderBiz {
- int insert(Order record);
-
- int insertSelective(Order record);
-
- OrderVo queryOrderVoByOrderId( Integer orderId);
- }
- package com.zq.ssm.biz.impl;
-
- import com.zq.ssm.biz.OrderBiz;
- import com.zq.ssm.mapper.OrderMapper;
- import com.zq.ssm.model.Order;
- import com.zq.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 insert(Order record) {
- return 0;
- }
-
- @Override
- public int insertSelective(Order record) {
- return 0;
- }
-
- @Override
- public OrderVo queryOrderVoByOrderId(Integer orderId) {
- return orderMapper.queryOrderVoByOrderId(orderId);
- }
- }
- package com.zq.ssm;
-
- import com.zq.ssm.biz.OrderBiz;
- import com.zq.ssm.model.vo.OrderVo;
- 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张强
- * @site www.zq.com
- * @create 2022-08-16 13:03
- */
- @RunWith(SpringJUnit4ClassRunner.class)
- @ContextConfiguration(locations={"classpath:applicationContext-mybatis.xml"})
- public class OrderBizImplTest {
- @Autowired
- private OrderBiz orderBiz;
-
-
- @Test
- public void queryOrderVoByOrderId() {
- OrderVo order = orderBiz.queryOrderVoByOrderId(9);
- System.out.println(order);
- order.getOrderItems().forEach(System.out::println);
- }
- }
这样的话便可测试了,接下啦我们实现另外一方的测试
-
- <resultMap id="OrderItemVoMap" type="com.zq.ssm.model.vo.OrderItemVo" >
- <result column="order_item_id" property="orderItemId">result>
- <result column="product_id" property="productId">result>
- <result column="quantity" property="quantity">result>
- <result column="oid" property="oid">result>
- <association property="order" javaType="com.zq.ssm.model.Order">
- <result column="order_id" property="orderId">result>
- <result column="order_no" property="orderNo">result>
- association>
- resultMap>
-
- <select id="queryOrderItemVoByOrderItemId" resultMap="OrderItemVoMap" parameterType="java.lang.Integer">
- select * from t_hibernate_order o,t_hibernate_order_item oi
- where o.order_id = oi.oid
- and oi.order_item_id = #{orderItemId}
- select>
接下来的步骤和上面的一样只是这里的配置文件不一样而已,所以我们便可以啦!
- <table schema="" tableName="t_hibernate_book" domainObjectName="Hbook"
- enableCountByExample="false" enableDeleteByExample="false"
- enableSelectByExample="false" enableUpdateByExample="false">
- table>
-
- <table schema="" tableName="t_hibernate_category" domainObjectName="Category"
- enableCountByExample="false" enableDeleteByExample="false"
- enableSelectByExample="false" enableUpdateByExample="false">
- table>
-
- <table schema="" tableName="t_hibernate_book_category" domainObjectName="HbookCategory"
- enableCountByExample="false" enableDeleteByExample="false"
- enableSelectByExample="false" enableUpdateByExample="false">
- table>
步骤一样我们直接上不一样的地方
编写XMl配置文件,这个文件我们直接下载中间的标的配置文件中
- <resultMap id="HbookVoMap" type="com.zq.ssm.model.vo.HbookVo">
- <result property="bookId" column="book_id">result>
- <result property="bookName" column="book_name">result>
- <collection property="categories" ofType="com.zq.ssm.model.Category">
- <result property="categoryId" column="category_id">result>
- <result property="categoryName" column="category_name">result>
- collection>
- resultMap>
-
- <resultMap id="CategoryVoMap" type="com.zq.ssm.model.vo.CategoryVo">
- <result property="categoryId" column="category_id">result>
- <result property="categoryName" column="category_name">result>
- <collection property="hbooks" ofType="com.zq.ssm.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>