(第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里面的

posted @ 2017-10-07 17:10  Pororo  阅读(952)  评论(0编辑  收藏  举报