一对多
利用Mybatis逆向生成工具生成对应表的Mapper和Model
generatorConfig.xml
1 <table schema="" tableName="t_hibernate_order" domainObjectName="Order" 2 enableCountByExample="false" enableDeleteByExample="false" 3 enableSelectByExample="false" enableUpdateByExample="false"> 4 <!-- 忽略列,不生成bean 字段 --> 5 <!-- <ignoreColumn column="FRED" /> --> 6 <!-- 指定列的java数据类型 --> 7 <!-- <columnOverride column="LONG_VARCHAR_FIELD" jdbcType="VARCHAR" /> --> 8 </table> 9 <table schema="" tableName="t_hibernate_book_category" domainObjectName="HbookCategory" 10 enableCountByExample="false" enableDeleteByExample="false" 11 enableSelectByExample="false" enableUpdateByExample="false"> 12 <!-- 忽略列,不生成bean 字段 --> <!-- <ignoreColumn column="FRED" /> --> 13 <!-- 指定列的java数据类型 --> 14 <!-- <columnOverride column="LONG_VARCHAR_FIELD" jdbcType="VARCHAR" /> --> 15 </table> 16 <table schema="" tableName="t_hibernate_category" domainObjectName="Category" 17 enableCountByExample="false" enableDeleteByExample="false" 18 <enableSelectByExample="false" enableUpdateByExample="false"> 19 <!--<!– 忽略列,不生成bean 字段 –>--> 20 <!--<!– <ignoreColumn column="FRED" /> –>--> 21 <!--<!– 指定列的java数据类型 –>--> 22 <!--<!– <columnOverride column="LONG_VARCHAR_FIELD" jdbcType="VARCHAR" /> –>--> 23 </table> 24 25 <table schema="" tableName="t_hibernate_order_item" domainObjectName="OrderItem" 26 enableCountByExample="false" enableDeleteByExample="false" 27 enableSelectByExample="false" enableUpdateByExample="false"> 28 <!-- 忽略列,不生成bean 字段 --> 29 <!-- <ignoreColumn column="FRED" /> --> 30 <!-- 指定列的java数据类型 --> 31 <!-- <columnOverride column="LONG_VARCHAR_FIELD" jdbcType="VARCHAR" /> --> 32 </table> 33 <table schema="" tableName="t_hibernate_book" domainObjectName="Hbook" 34 enableCountByExample="false" enableDeleteByExample="false" 35 enableSelectByExample="false" enableUpdateByExample="false"> 36 <!-- 忽略列,不生成bean 字段 --> 37 <!-- <ignoreColumn column="FRED" /> --> 38 <!-- 指定列的java数据类型 --> 39 <!-- <columnOverride column="LONG_VARCHAR_FIELD" jdbcType="VARCHAR" /> --> 40 </table>
OrderVo
1 package com.Mybatis.model.Vo; 2 3 import com.Mybatis.model.Order; 4 import com.Mybatis.model.OrderItem; 5 6 import java.util.ArrayList; 7 import java.util.List; 8 9 public class OrderVo extends Order { 10 private List<OrderItem> orderItems = new ArrayList<>(); 11 12 public List<OrderItem> getOrderItems() { 13 return orderItems; 14 } 15 16 public void setOrderItems(List<OrderItem> orderItems) { 17 this.orderItems = orderItems; 18 } 19 }
OrderItemVo
1 package com.Mybatis.model.Vo; 2 3 import com.Mybatis.model.Order; 4 import com.Mybatis.model.OrderItem; 5 6 public class OrderItemVo extends OrderItem { 7 private Order order; 8 9 public Order getOrder() { 10 return order; 11 } 12 13 public void setOrder(Order order) { 14 this.order = order; 15 } 16 17 }
配置映射关系
OrderMapper
1 package com.Mybatis.mapper; 2 3 import com.Mybatis.model.Order; 4 import com.Mybatis.model.Vo.OrderVo; 5 import org.apache.ibatis.annotations.Param; 6 7 import java.util.List; 8 9 public interface OrderMapper { 10 int deleteByPrimaryKey(Integer orderId); 11 12 int insert(Order record); 13 14 int insertSelective(Order record); 15 16 Order selectByPrimaryKey(Integer orderId); 17 18 int updateByPrimaryKeySelective(Order record); 19 20 int updateByPrimaryKey(Order record); 21 List<OrderVo> selectByOrderId(@Param("orderId") Integer orderId); 22 }
OrderMapper.xml
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > 3 <mapper namespace="com.Mybatis.mapper.OrderMapper" > 4 <resultMap id="BaseResultMap" type="com.Mybatis.model.Order" > 5 <constructor > 6 <idArg column="order_id" jdbcType="INTEGER" javaType="java.lang.Integer" /> 7 <arg column="order_no" jdbcType="VARCHAR" javaType="java.lang.String" /> 8 </constructor> 9 </resultMap> 10 <resultMap id="OrderVoMap" type="com.Mybatis.model.Vo.OrderVo" > 11 <result property="orderId" column="order_id"></result> 12 <result property="orderNo" column="order_no"></result> 13 <!--<result property="orderItems"></result>--> 14 <collection property="orderItems" ofType="com.Mybatis.model.OrderItem"> 15 <result property="orderItemId" column="order_item_id"></result> 16 <result property="productId" column="product_id"></result> 17 <result property="quantity" column="quantity"></result> 18 <result property="oid" column="oid"></result> 19 </collection> 20 </resultMap> 21 <sql id="Base_Column_List" > 22 order_id, order_no 23 </sql> 24 <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" > 25 select 26 <include refid="Base_Column_List" /> 27 from t_hibernate_order 28 where order_id = #{orderId,jdbcType=INTEGER} 29 </select> 30 <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" > 31 delete from t_hibernate_order 32 where order_id = #{orderId,jdbcType=INTEGER} 33 </delete> 34 <insert id="insert" parameterType="com.Mybatis.model.Order" > 35 insert into t_hibernate_order (order_id, order_no) 36 values (#{orderId,jdbcType=INTEGER}, #{orderNo,jdbcType=VARCHAR}) 37 </insert> 38 <insert id="insertSelective" parameterType="com.Mybatis.model.Order" > 39 insert into t_hibernate_order 40 <trim prefix="(" suffix=")" suffixOverrides="," > 41 <if test="orderId != null" > 42 order_id, 43 </if> 44 <if test="orderNo != null" > 45 order_no, 46 </if> 47 </trim> 48 <trim prefix="values (" suffix=")" suffixOverrides="," > 49 <if test="orderId != null" > 50 #{orderId,jdbcType=INTEGER}, 51 </if> 52 <if test="orderNo != null" > 53 #{orderNo,jdbcType=VARCHAR}, 54 </if> 55 </trim> 56 </insert> 57 <update id="updateByPrimaryKeySelective" parameterType="com.Mybatis.model.Order" > 58 update t_hibernate_order 59 <set > 60 <if test="orderNo != null" > 61 order_no = #{orderNo,jdbcType=VARCHAR}, 62 </if> 63 </set> 64 where order_id = #{orderId,jdbcType=INTEGER} 65 </update> 66 <update id="updateByPrimaryKey" parameterType="com.Mybatis.model.Order" > 67 update t_hibernate_order 68 set order_no = #{orderNo,jdbcType=VARCHAR} 69 where order_id = #{orderId,jdbcType=INTEGER} 70 </update> 71 <select id="selectByOrderId" resultMap="OrderVoMap" parameterType="java.lang.Integer" > 72 select * from t_hibernate_order o,t_hibernate_order_item oi where o.order_id=oi.oid and oi.oid = #{orderId} 73 </select> 74 </mapper>
OrderItemMapper
1 package com.Mybatis.mapper; 2 3 import com.Mybatis.model.OrderItem; 4 import com.Mybatis.model.Vo.OrderItemVo; 5 import org.apache.ibatis.annotations.Param; 6 import org.springframework.stereotype.Repository; 7 8 import java.util.List; 9 10 @Repository 11 public interface OrderItemMapper { 12 int deleteByPrimaryKey(Integer orderItemId); 13 14 int insert(OrderItem record); 15 16 int insertSelective(OrderItem record); 17 18 OrderItem selectByPrimaryKey(Integer orderItemId); 19 20 int updateByPrimaryKeySelective(OrderItem record); 21 22 int updateByPrimaryKey(OrderItem record); 23 24 List<OrderItemVo> selectByOrderItemId(@Param("ordertemId") Integer ordertemId); 25 26 }
OrderItemMapper.xml
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > 3 <mapper namespace="com.Mybatis.mapper.OrderItemMapper" > 4 <resultMap id="BaseResultMap" type="com.Mybatis.model.OrderItem" > 5 <constructor > 6 <idArg column="order_item_id" jdbcType="INTEGER" javaType="java.lang.Integer" /> 7 <arg column="product_id" jdbcType="INTEGER" javaType="java.lang.Integer" /> 8 <arg column="quantity" jdbcType="INTEGER" javaType="java.lang.Integer" /> 9 <arg column="oid" jdbcType="INTEGER" javaType="java.lang.Integer" /> 10 </constructor> 11 </resultMap> 12 13 <resultMap id="OrderItemMap" type="com.Mybatis.model.Vo.OrderItemVo" > 14 <result property="orderItemId" column="order_item_id"></result> 15 <result property="productId" column="product_id"></result> 16 <result property="quantity" column="quantity"></result> 17 <result property="oid" column="oid"></result> 18 <!--<result property="orderItems"></result>--> 19 <association property="order" javaType="com.Mybatis.model.Order"> 20 <result property="orderId" column="order_id"></result> 21 <result property="orderNo" column="order_no"></result> 22 </association> 23 </resultMap> 24 25 <sql id="Base_Column_List" > 26 order_item_id, product_id, quantity, oid 27 </sql> 28 <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" > 29 select 30 <include refid="Base_Column_List" /> 31 from t_hibernate_order_item 32 where order_item_id = #{orderItemId,jdbcType=INTEGER} 33 </select> 34 <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" > 35 delete from t_hibernate_order_item 36 where order_item_id = #{orderItemId,jdbcType=INTEGER} 37 </delete> 38 <insert id="insert" parameterType="com.Mybatis.model.OrderItem" > 39 insert into t_hibernate_order_item (order_item_id, product_id, quantity, 40 oid) 41 values (#{orderItemId,jdbcType=INTEGER}, #{productId,jdbcType=INTEGER}, #{quantity,jdbcType=INTEGER}, 42 #{oid,jdbcType=INTEGER}) 43 </insert> 44 <insert id="insertSelective" parameterType="com.Mybatis.model.OrderItem" > 45 insert into t_hibernate_order_item 46 <trim prefix="(" suffix=")" suffixOverrides="," > 47 <if test="orderItemId != null" > 48 order_item_id, 49 </if> 50 <if test="productId != null" > 51 product_id, 52 </if> 53 <if test="quantity != null" > 54 quantity, 55 </if> 56 <if test="oid != null" > 57 oid, 58 </if> 59 </trim> 60 <trim prefix="values (" suffix=")" suffixOverrides="," > 61 <if test="orderItemId != null" > 62 #{orderItemId,jdbcType=INTEGER}, 63 </if> 64 <if test="productId != null" > 65 #{productId,jdbcType=INTEGER}, 66 </if> 67 <if test="quantity != null" > 68 #{quantity,jdbcType=INTEGER}, 69 </if> 70 <if test="oid != null" > 71 #{oid,jdbcType=INTEGER}, 72 </if> 73 </trim> 74 </insert> 75 <update id="updateByPrimaryKeySelective" parameterType="com.Mybatis.model.OrderItem" > 76 update t_hibernate_order_item 77 <set > 78 <if test="productId != null" > 79 product_id = #{productId,jdbcType=INTEGER}, 80 </if> 81 <if test="quantity != null" > 82 quantity = #{quantity,jdbcType=INTEGER}, 83 </if> 84 <if test="oid != null" > 85 oid = #{oid,jdbcType=INTEGER}, 86 </if> 87 </set> 88 where order_item_id = #{orderItemId,jdbcType=INTEGER} 89 </update> 90 <update id="updateByPrimaryKey" parameterType="com.Mybatis.model.OrderItem" > 91 update t_hibernate_order_item 92 set product_id = #{productId,jdbcType=INTEGER}, 93 quantity = #{quantity,jdbcType=INTEGER}, 94 oid = #{oid,jdbcType=INTEGER} 95 where order_item_id = #{orderItemId,jdbcType=INTEGER} 96 </update> 97 98 <select id="selectByOrderItemId" resultMap="OrderItemVoMap" parameterType="java.lang.Integer" 99 resultType="com.Mybatis.model.Vo.OrderItemVo"> 100 select * from t_hibernate_order o,t_hibernate_order_item oi where o.order_id=oi.oid and oi.order_item_id = #{ordertemId} 101 </select> 102 </mapper>
测试
OneToManyService
1 package com.Mybatis.service; 2 3 import com.Mybatis.model.vo.OrderItemVo; 4 import com.Mybatis.model.vo.OrderVo; 5 6 import java.util.List; 7 8 public interface OneToManyService { 9 10 List<OrderItemVo> selectByOrderItemId(Integer orderItemId); 11 12 List<OrderVo> selectByOrderId( Integer orderId); 13 14 }
OneToManyServiceImpl
1 package com.Mybatis.service.impl; 2 3 import com.Mybatis.mapper.OrderItemMapper; 4 import com.Mybatis.mapper.OrderMapper; 5 import com.Mybatis.model.vo.OrderItemVo; 6 import com.Mybatis.model.vo.OrderVo; 7 import com.Mybatis.service.OneToManyService; 8 import org.springframework.beans.factory.annotation.Autowired; 9 import org.springframework.stereotype.Service; 10 11 import java.util.List; 12 13 @Service 14 public class OneToManyServiceImpl implements OneToManyService { 15 @Autowired 16 private OrderMapper orderMapper; 17 @Autowired 18 private OrderItemMapper orderItemMapper; 19 @Override 20 public List<OrderItemVo> selectByOrderItemId(Integer orderItemId) { 21 return orderItemMapper.selectByOrderItemId(orderItemId); 22 } 23 24 @Override 25 public List<OrderVo> selectByOrderId(Integer orderId) { 26 return orderMapper.selectByOrderId(orderId); 27 } 28 }
OneToManyServiceImplTest
1 package com.Mybatis.service.impl; 2 3 import com.Mybatis.SpringBaseTest; 4 import com.Mybatis.model.OrderItem; 5 import com.Mybatis.model.vo.OrderItemVo; 6 import com.Mybatis.model.vo.OrderVo; 7 import com.Mybatis.service.OneToManyService; 8 import org.junit.Test; 9 import org.springframework.beans.factory.annotation.Autowired; 10 11 import java.util.List; 12 13 public class OneToManyServiceImplTest extends SpringBaseTest { 14 15 @Autowired 16 private OneToManyService oneToManyService; 17 @Test 18 public void selectByOrderItemId() { 19 List<OrderItemVo> orderItemVos = oneToManyService.selectByOrderItemId(36); 20 OrderItemVo orderItemVo = orderItemVos.get(0); 21 System.out.println(orderItemVo); 22 System.out.println(orderItemVo.getOrder()); 23 } 24 25 @Test 26 public void selectByOrderId() { 27 28 List<OrderVo> orderVos = oneToManyService.selectByOrderId(8); 29 OrderVo orderVo = orderVos.get(0); 30 System.out.println(orderVo); 31 System.out.println(orderVos.size()); 32 for (OrderItem orderItem : orderVo.getOrderItems()) { 33 System.out.println(orderItem); 34 } 35 36 } 37 }
多对多
用逆向生成工具生成对应表的mapper和Model(上述以说明)
CategoryVo
1 package com.Mybatis.model.vo; 2 3 import com.Mybatis.model.Category; 4 import com.Mybatis.model.HBook; 5 6 import java.util.ArrayList; 7 import java.util.List; 8 9 public class CategoryVo extends Category { 10 private List<HBook> hBooks = new ArrayList<>(); 11 12 public List<HBook> gethBooks() { 13 return hBooks; 14 } 15 16 public void sethBooks(List<HBook> hBooks) { 17 this.hBooks = hBooks; 18 } 19 }
HbookVo
1 package com.Mybatis.model.vo; 2 3 import com.Mybatis.model.Category; 4 import com.Mybatis.model.HBook; 5 6 import java.util.ArrayList; 7 import java.util.List; 8 9 public class HbookVo extends HBook { 10 private List<Category> categories = new ArrayList<>(); 11 12 public List<Category> getCategories() { 13 return categories; 14 } 15 16 public void setCategories(List<Category> categories) { 17 this.categories = categories; 18 } 19 }
配置映射关系
CategoryMapper.xml
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > 3 <mapper namespace="com.Mybatis.mapper.CategoryMapper" > 4 <resultMap id="BaseResultMap" type="com.Mybatis.model.Category" > 5 <constructor > 6 <idArg column="category_id" jdbcType="INTEGER" javaType="java.lang.Integer" /> 7 <arg column="category_name" jdbcType="VARCHAR" javaType="java.lang.String" /> 8 </constructor> 9 </resultMap> 10 11 <resultMap id="CategoryVoMap" type="com.Mybatis.model.vo.CategoryVo"> 12 <result property="categoryId" column="category_id"></result> 13 <result property="categoryName" column="category_name"></result> 14 15 <!--<result property="orderItems" column=""></result>--> 16 <collection property="hBooks" ofType="com.Mybatis.model.HBook"> 17 <result property="bookId" column="book_id"></result> 18 <result property="bookName" column="book_name"></result> 19 <result property="price" column="price"></result> 20 </collection> 21 </resultMap> 22 23 <sql id="Base_Column_List" > 24 category_id, category_name 25 </sql> 26 <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" > 27 select 28 <include refid="Base_Column_List" /> 29 from t_hibernate_category 30 where category_id = #{categoryId,jdbcType=INTEGER} 31 </select> 32 <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" > 33 delete from t_hibernate_category 34 where category_id = #{categoryId,jdbcType=INTEGER} 35 </delete> 36 <insert id="insert" parameterType="com.Mybatis.model.Category" > 37 insert into t_hibernate_category (category_id, category_name) 38 values (#{categoryId,jdbcType=INTEGER}, #{categoryName,jdbcType=VARCHAR}) 39 </insert> 40 <insert id="insertSelective" parameterType="com.Mybatis.model.Category" > 41 insert into t_hibernate_category 42 <trim prefix="(" suffix=")" suffixOverrides="," > 43 <if test="categoryId != null" > 44 category_id, 45 </if> 46 <if test="categoryName != null" > 47 category_name, 48 </if> 49 </trim> 50 <trim prefix="values (" suffix=")" suffixOverrides="," > 51 <if test="categoryId != null" > 52 #{categoryId,jdbcType=INTEGER}, 53 </if> 54 <if test="categoryName != null" > 55 #{categoryName,jdbcType=VARCHAR}, 56 </if> 57 </trim> 58 </insert> 59 <update id="updateByPrimaryKeySelective" parameterType="com.Mybatis.model.Category" > 60 update t_hibernate_category 61 <set > 62 <if test="categoryName != null" > 63 category_name = #{categoryName,jdbcType=VARCHAR}, 64 </if> 65 </set> 66 where category_id = #{categoryId,jdbcType=INTEGER} 67 </update> 68 <update id="updateByPrimaryKey" parameterType="com.Mybatis.model.Category" > 69 update t_hibernate_category 70 set category_name = #{categoryName,jdbcType=VARCHAR} 71 where category_id = #{categoryId,jdbcType=INTEGER} 72 </update> 73 74 <!--通过一个类别的id,查询出类别信息的同时,还查询出各个类别对应的书籍--> 75 <select id="selectByCid" resultMap="CategoryVoMap" parameterType="java.lang.Integer" > 76 SELECT * FROM t_hibernate_book b,t_hibernate_book_category bc,t_hibernate_category c 77 WHERE b.book_id = bc.bid AND bc.cid = c.category_id 78 AND c.category_id = #{cid} 79 </select> 80 81 </mapper>
HBookMapper.xml
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > 3 <mapper namespace="com.Mybatis.mapper.HBookMapper" > 4 <resultMap id="BaseResultMap" type="com.Mybatis.model.HBook" > 5 <constructor > 6 <idArg column="book_id" jdbcType="INTEGER" javaType="java.lang.Integer" /> 7 <arg column="book_name" jdbcType="VARCHAR" javaType="java.lang.String" /> 8 <arg column="price" jdbcType="REAL" javaType="java.lang.Float" /> 9 </constructor> 10 </resultMap> 11 12 <resultMap id="HbookVoMap" type="com.Mybatis.model.vo.HbookVo"> 13 <result property="bookId" column="book_id"></result> 14 <result property="bookName" column="book_name"></result> 15 <result property="price" column="price"></result> 16 <!--<result property="orderItems" column=""></result>--> 17 <collection property="categories" ofType="com.Mybatis.model.Category"> 18 <result property="categoryId" column="category_id"></result> 19 <result property="categoryName" column="category_name"></result> 20 </collection> 21 </resultMap> 22 23 <sql id="Base_Column_List" > 24 book_id, book_name, price 25 </sql> 26 <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" > 27 select 28 <include refid="Base_Column_List" /> 29 from t_hibernate_book 30 where book_id = #{bookId,jdbcType=INTEGER} 31 </select> 32 <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" > 33 delete from t_hibernate_book 34 where book_id = #{bookId,jdbcType=INTEGER} 35 </delete> 36 <insert id="insert" parameterType="com.Mybatis.model.HBook" > 37 insert into t_hibernate_book (book_id, book_name, price 38 ) 39 values (#{bookId,jdbcType=INTEGER}, #{bookName,jdbcType=VARCHAR}, #{price,jdbcType=REAL} 40 ) 41 </insert> 42 <insert id="insertSelective" parameterType="com.Mybatis.model.HBook" > 43 insert into t_hibernate_book 44 <trim prefix="(" suffix=")" suffixOverrides="," > 45 <if test="bookId != null" > 46 book_id, 47 </if> 48 <if test="bookName != null" > 49 book_name, 50 </if> 51 <if test="price != null" > 52 price, 53 </if> 54 </trim> 55 <trim prefix="values (" suffix=")" suffixOverrides="," > 56 <if test="bookId != null" > 57 #{bookId,jdbcType=INTEGER}, 58 </if> 59 <if test="bookName != null" > 60 #{bookName,jdbcType=VARCHAR}, 61 </if> 62 <if test="price != null" > 63 #{price,jdbcType=REAL}, 64 </if> 65 </trim> 66 </insert> 67 <update id="updateByPrimaryKeySelective" parameterType="com.Mybatis.model.HBook" > 68 update t_hibernate_book 69 <set > 70 <if test="bookName != null" > 71 book_name = #{bookName,jdbcType=VARCHAR}, 72 </if> 73 <if test="price != null" > 74 price = #{price,jdbcType=REAL}, 75 </if> 76 </set> 77 where book_id = #{bookId,jdbcType=INTEGER} 78 </update> 79 <update id="updateByPrimaryKey" parameterType="com.Mybatis.model.HBook" > 80 update t_hibernate_book 81 set book_name = #{bookName,jdbcType=VARCHAR}, 82 price = #{price,jdbcType=REAL} 83 where book_id = #{bookId,jdbcType=INTEGER} 84 </update> 85 86 <!--通过一个书籍id,查询出书籍的信息的同时,还查询出这本书对应的类别--> 87 <select id="selectByBid" resultMap="HbookVoMap" parameterType="java.lang.Integer" > 88 SELECT * FROM t_hibernate_book b,t_hibernate_book_category bc,t_hibernate_category c 89 WHERE b.book_id = bc.bid AND bc.cid = c.category_id 90 AND b.book_id=#{bid} 91 </select> 92 93 94 </mapper>
CategoryMapper
1 package com.Mybatis.mapper; 2 3 import com.Mybatis.model.Category; 4 import com.Mybatis.model.vo.CategoryVo; 5 import org.apache.ibatis.annotations.Param; 6 import org.springframework.stereotype.Repository; 7 8 @Repository 9 public interface CategoryMapper { 10 int deleteByPrimaryKey(Integer categoryId); 11 12 int insert(Category record); 13 14 int insertSelective(Category record); 15 16 Category selectByPrimaryKey(Integer categoryId); 17 18 int updateByPrimaryKeySelective(Category record); 19 20 int updateByPrimaryKey(Category record); 21 22 23 CategoryVo selectByCid(@Param("cid") Integer cid); 24 25 }
HBookMapper
1 package com.Mybatis.mapper; 2 3 import com.Mybatis.model.HBook; 4 import com.Mybatis.model.vo.HbookVo; 5 import org.apache.ibatis.annotations.Param; 6 import org.springframework.stereotype.Repository; 7 8 @Repository 9 public interface HBookMapper { 10 int deleteByPrimaryKey(Integer bookId); 11 12 int insert(HBook record); 13 14 int insertSelective(HBook record); 15 16 HBook selectByPrimaryKey(Integer bookId); 17 18 int updateByPrimaryKeySelective(HBook record); 19 20 int updateByPrimaryKey(HBook record); 21 22 23 HbookVo selectByBid(@Param("bid") Integer bid); 24 25 }
测试
ManyToManyService
1 package com.Mybatis.service; 2 3 import com.Mybatis.model.vo.CategoryVo; 4 import com.Mybatis.model.vo.HbookVo; 5 6 public interface ManyToManyService { 7 8 HbookVo selectByBid(Integer bid); 9 10 11 CategoryVo selectByCid(Integer cid); 12 }
ManyToManyServiceImpl
1 package com.Mybatis.service.impl; 2 3 import com.Mybatis.mapper.CategoryMapper; 4 import com.Mybatis.mapper.HBookMapper; 5 import com.Mybatis.model.vo.CategoryVo; 6 import com.Mybatis.model.vo.HbookVo; 7 import com.Mybatis.service.ManyToManyService; 8 import org.springframework.beans.factory.annotation.Autowired; 9 import org.springframework.stereotype.Service; 10 11 @Service 12 public class ManyToManyServiceImpl implements ManyToManyService { 13 @Autowired 14 private CategoryMapper categoryMapper; 15 @Autowired 16 private HBookMapper hBookMapper; 17 18 @Override 19 public HbookVo selectByBid(Integer bid) { 20 return hBookMapper.selectByBid(bid); 21 } 22 23 @Override 24 public CategoryVo selectByCid(Integer cid) { 25 return categoryMapper.selectByCid(cid); 26 } 27 }
ManyToManyServiceImplTest
1 package com.Mybatis.service.impl; 2 3 import com.Mybatis.SpringBaseTest; 4 import com.Mybatis.model.Category; 5 import com.Mybatis.model.HBook; 6 import com.Mybatis.model.vo.CategoryVo; 7 import com.Mybatis.model.vo.HbookVo; 8 import org.junit.Test; 9 import org.springframework.beans.factory.annotation.Autowired; 10 11 public class ManyToManyServiceImplTest extends SpringBaseTest { 12 13 @Autowired 14 private ManyToManyServiceImpl manyToManyService; 15 16 @Test 17 public void selectByBid() { 18 HbookVo hbookVo = manyToManyService.selectByBid(8); 19 System.out.println(hbookVo); 20 for (Category category : hbookVo.getCategories()) { 21 System.out.println(category); 22 } 23 24 } 25 26 27 @Test 28 public void selectByCid() { 29 CategoryVo categoryVo = manyToManyService.selectByCid(8); 30 System.out.println(categoryVo); 31 for (HBook gethBook : categoryVo.gethBooks()) { 32 System.out.println(gethBook); 33 } 34 35 } 36 }