zoukankan      html  css  js  c++  java
  • mybatis关联关系映射

    1、一对多关联关系

    2、多对多关联关系

    首先先用逆向生成工具生成t_hibernate_ordert_hibernate_order_item

    t_hibernate_bookt_hibernate_book_categoryt_hibernate_category

    这五张表对应的model与mapper

    配置mybatis-generator插件生成文件位置
    修改generatorConfig.xml配置文件的生成目录(mapper和model)及对应生成关系

    创建实体类:

    package com.lingerqi.model.vo;
    
    import com.lingerqi.model.Horder;
    import com.lingerqi.model.Horderitem;
    
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * @author xyls
     * @create  2019-10-23 10:43
     */
    public class OrderVo extends Horder {
    
    
        private List<Horderitem> horderitems = new ArrayList<>();
    
        public List<Horderitem> getHorderitems() {
            return horderitems;
        }
    
        public void setHorderitems(List<Horderitem> horderitems) {
            this.horderitems = horderitems;
        }
        @Override
        public String toString() {
            return "OrderVo{" +
                    "horderitems=" + horderitems +
                    '}';
        }
    }
    

      

    package com.lingerqi.model.vo;
    
    import com.lingerqi.model.Horder;
    import com.lingerqi.model.Horderitem;
    
    /**
     * @author xyls
     * @create  2019-10-23 10:46
     */
    public class HorderitemVo extends Horderitem {
        private Horder horder;
    
    
        public Horder getHorder() {
            return horder;
        }
    
        public void setHorder(Horder horder) {
            this.horder = horder;
        }
    
        @Override
        public String toString() {
            return "HorderitemVo{" +
                    "horder=" + horder +
                    '}';
        }
    }
    

      HorderMapper.xml:

     <resultMap id="OrderVoMap" type="com.lingerqi.model.vo.OrderVo" >
        <result property="orderId" column="order_id"></result>
        <result property="orderNo" column="order_no"></result>
        <collection property="orderItems" ofType="com.lingerqi.model.Horderitem">
          <result property="orderItemId" column="order_item_id"></result>
          <result property="oid" column="oid"></result>
          <result property="productId" column="product_id"></result>
          <result property="quantity" column="quantity"></result>
        </collection>
      </resultMap>
    <select id="selectByOrderId" resultMap="OrderVoMap" parameterType="java.lang.Integer">
       select * from t_hibernate_order o,t_hibernate_order_item oi where o.ordre_id=oi.oid
       and oi.order_id=#{orderId}
      </select>
    

      

    @Repository
    public interface HorderMapper {
      List<OrderVo> selectByOrderId(@Param("orderId") Integer orderId);
    }
    

      HorderitemMapper.xml

    <resultMap id="OrderItemVoMap" type="com.lingerqi.model.vo.HorderitemVo">
    
        <result property="orderItemId" column="order_item_id"></result>
        <result property="productId" column="product_id"></result>
        <result property="quantity" column="quantity"></result>
        <result property="oid" column="oid"></result>
        <!--<result property="orderItems"></result>-->
        <association property="order" javaType=" com.lingerqi.model.Horder">
          <result property="orderId" column="order_id"></result>
          <result property="orderNo" column="order_no"></result>
        </association>
      </resultMap>
    <select id="selectByOrderItemId" resultMap="OrderItemVoMap" parameterType="java.lang.Integer">
       select * from t_hibernate_order o,t_hibernate_order_item oi where o.ordre_id=oi.oid
       and oi.order_item_id =#{orderItemId}
      </select> 
    

      

    @Repository
    public interface HorderitemMapper {
       List<HorderitemVo> selectByOrderItemId(@Param("orderItemId") Integer orderItemId);
    }
    

      

    package com.lingerqi.Service;
    
    
    import com.lingerqi.model.vo.HorderitemVo;
    import com.lingerqi.model.vo.OrderVo;
    
    import java.util.List;
    
    /**
     * @auther xyls
     * @create 2019-10-23-18:19
     */
    public interface OneToManyService {
        List<OrderVo> selectByOrderId(Integer orderId);
    
        List<HorderitemVo> selectByOrderItemId(Integer orderItemId);
    
    }
    

      

    public class OneToManyServiceImplTest extends SpringBaseTest {
        @Autowired
        private OneToManyService oneToManyService;
    
        @Test
        public void selectByOrderId() {
            List<OrderVo> orderVos = oneToManyService.selectByOrderId(8);
            OrderVo orderVo=orderVos.get(0);
            System.out.println(orderVos);
            for (OrderItem orderItem : orderVo.getOrderItems()) {
                System.out.println(orderItem);
            }
        }
    
        @Test
        public void selectByOrderItemId() {
            List<OrderItemVo> orderItemVos = oneToManyService.selectByOrderItemId(36);
            OrderItemVo orderItemVo=orderItemVos.get(0);
            System.out.println(orderItemVo);
            System.out.println(orderItemVo.getOrder());
        }
    }
    

      

    package com.lingerqi.mapper;
    
    import com.lingerqi.model.HbookCategory;
    
    public interface HbookCategoryMapper {
        int deleteByPrimaryKey(Integer bcid);
    
        int insert(HbookCategory record);
    
        int insertSelective(HbookCategory record);
    
        HbookCategory selectByPrimaryKey(Integer bcid);
    
        int updateByPrimaryKeySelective(HbookCategory record);
    
        int updateByPrimaryKey(HbookCategory record);
    }
    

      

    package com.lingerqi.service.impl;

    import com.lingerqi.service.ManyToManyService;
    import com.lingerqi.mapper.CategoryMapper;
    import com.lingerqi.mapper.HbookMapper;
    import com.lingerqi.model.vo.CategoryVo;
    import com.lingerqi.model.vo.HbookVo;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;

    /**
    * @auther xyls
    * @create 2019-10-24-11:11
    */
    @Service
    public class ManyToManyServiceImpl implements ManyToManyService {
    @Autowired
    private HbookMapper hbookMapper;
    @Autowired
    private CategoryMapper categoryMapper;
    @Override
    public HbookVo selectByBid(Integer bid) {
    return hbookMapper.selectByBid(bid);
    }

    @Override
    public CategoryVo selectByCid(Integer cid) {
    return categoryMapper.selectByCid(cid);
    }
    }

      

    package com.lingerqi.service.impl;
    
    import com.lingerqi.SpringBaseTest;
    import com.lingerqi.model.Category;
    import com.lingerqi.model.Hbook;
    import com.lingerqi.model.vo.CategoryVo;
    import com.lingerqi.model.vo.HbookVo;
    import com.lingerqi.service.ManyToManyService;
    import org.junit.Test;
    import org.springframework.beans.factory.annotation.Autowired;
    
    /**
     * @auther xyls
     * @create 2019-10-24-11:13
     */
    public class ManyToManyServiceImplTest extends SpringBaseTest {
    
        @Autowired
        private ManyToManyService manyToManyService;
        @Test
        public void selectByBid() {
            HbookVo hbookVo=manyToManyService.selectByBid(8);
            System.out.println(hbookVo);
            for (Category category : hbookVo.getCategories()) {
                System.out.println(category);
            }
        }
    
        @Test
        public void selectByCid() {
            CategoryVo categoryVo = this.manyToManyService.selectByCid(8);
            System.out.println(categoryVo);
            for (Hbook hbook : categoryVo.getHbooks()) {
                System.out.println(hbook);
            }
    
        }
    }
    

      

  • 相关阅读:
    上云,你真的只差一本葵花宝典
    Linux Kernel 4.11首个候选版本开放下载
    Windows 10 host where Credential Guard or Device Guard is enabled fails when running Workstation (2146361)
    .NET技术+25台服务器怎样支撑世界第54大网站
    Azure 订阅和服务限制、配额和约束
    python再议装饰器
    python的上下文管理器-1
    python的上下文管理器
    python小知识点
    python做简易记事本
  • 原文地址:https://www.cnblogs.com/omji0030/p/11745397.html
Copyright © 2011-2022 走看看