什么是分布查询和延迟加载技术;怎么实现分步查询?什么是延迟加载 ?为什么要用延迟加载?以及有哪些好处?
怎么实现
分布查询+延迟加载
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里面的