zoukankan      html  css  js  c++  java
  • (第7天)mybatis分步查询与延迟加载

    什么是分布查询和延迟加载技术;怎么实现分步查询?什么是延迟加载 ?为什么要用延迟加载?以及有哪些好处?

    怎么实现

    分布查询+延迟加载
    1.首先查询当前当前商品,得到产地id
    2.通过产地id查询出产地国家信息
    3.将查询到的产地国家信息封装到商品对象中


    现在看下我的数据表,我做了点增加

    **数据库goods表,增加了一个类型--nation_id **

    数据库表nation表

    整体思路是:通过ID查询goods的一行信息,拿到这行信息里的nation_id(产地id) 后,通过这个nation_id (产地id) 查到nation表 里的 相应产地名称

    老套路第1步
    /Mybatis02/src/com/chen/dao/GoodsDao2.java

    //分步查询方法(因为根据id查的,肯定只出一条数据,所以用类,而不用List)
    	public GoodsInfo selectStep(String id);
    

    老套路第2步
    /Mybatis02/config/mappers/GoodsInfoMapper.xml

      <!-- 
      		分布查询+延迟加载
      		1.首先查询当前当前商品,得到商品id
      		2.通过商品id查询出产地国家信息
      		3.将查询到的产地国家信息封装到商品对象中
       -->
      <select id ="selectStep" resultMap="dog">
         <!-- 第一步先把SQL写出来,根据id查 产地id -->
      	select * from goods where id = #{id}
      </select>
      
      <resultMap type="com.chen.GoodsInfo" id="dog">
      		<!-- 下面id表示配置主键的封装格式 
      			 column对应的是上面SQL语句查询后所显示的列名-->
      		<id column="id" property="e_id"/>
      		<result column="name" property="e_name"/>
      		<!-- 想要完成分布查询还要使用association
      		     下面property对应的是关联的类对象名称 
      		   然后紧跟其后的是select,而不是上章的JavaType
      		   由于产地信息是通过产地id查出来的-->
      		<association property="nati" select="">
      		
      		</association>
      		
      </resultMap>
    

    以上暂时还未写完整的,暂时先写到 select=" " 。在这个select的属性里边,意思是 指定通过谁来查询 产地

    那么这个select属性里面该填什么呢

    新建一个接口类,命名为NationDao


    相应的,也新增一个表映射XML文件,命名为NationMapper.XML

    别忘了,把刚新增的表映射XML文件加进 总的配置文件里

    回到上面那个select属性问题里,答案是通过NationMapper.XML里面的

  • 相关阅读:
    c++虚继承
    linux常用命令大全
    数据库三大范式最通俗解释
    PG数据库空间大小及数据库对象占用空间大小
    Oracle表分区详解
    Excel数据导入PG库,字符串正则表达式
    Oracle 执行计划
    ASP.NET MVC5框架揭秘 学习笔记01
    .NET简单学习
    蓝桥杯_算法训练_ALGO10_集合运算
  • 原文地址:https://www.cnblogs.com/czy16/p/7635177.html
Copyright © 2011-2022 走看看