• 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 }

  • 相关阅读:
    jquery几款不错的插件
    jQuery 闭包
    SQL高手篇:精典SQL FAQ收藏
    完美解决Excel的连接字符串与上传方法
    文件流高级压缩文件和解压缩
    jquery弹窗插件jqueryimpromptu.4.0.js
    SQL Server 2008删除行出现错误“已更新或删除的行值要么不能使该行成为唯一行,要么改变了多个行”
    那些天我们经历的实时错误—StudentMis小结
    基础很重要,查询如何“组合”!谈谈组合查询
    探究Null、Empty、VbNullstring、Nothing的异同
  • 原文地址:https://www.cnblogs.com/xcn123/p/11739086.html
Copyright © 2020-2023  润新知