Mybatis关联关系

一对多

利用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            <!--&lt;!&ndash; 忽略列,不生成bean 字段 &ndash;&gt;-->
20            <!--&lt;!&ndash; <ignoreColumn column="FRED" /> &ndash;&gt;-->
21            <!--&lt;!&ndash; 指定列的java数据类型 &ndash;&gt;-->
22             <!--&lt;!&ndash; <columnOverride column="LONG_VARCHAR_FIELD" jdbcType="VARCHAR" /> &ndash;&gt;-->
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 }

原文地址:https://www.cnblogs.com/xcn123/p/11739086.html