首页 > 其他 > 详细

10 MyBatis - 延迟加载(案例)

时间:2020-11-28 09:37:19      阅读:28      评论:0      收藏:0      [点我收藏+]

MyBatis - 延迟加载

需求:

查询订单(Order)信息并且关联查询用户(User)信息。

如果先查询订单(Order)信息即可满足要求,当我们需要查询用户(User)信息时再查询订单(order)信息

OrderMapper.xml映射文件

<mapper namespace="com.itheima.mapper.OrderMapper">
  <resultMap id="orderMapper" type="order">
    <!-- 封装订单信息 -->
    <id property="id" column="id"/>
    <result property="ordertime" column="ordertime"/>
    <result property="total" column="total"/>
    <!-- select: 调用namespace+id对应的SQL语句,执行查询 -->
    <!-- fetchType="lazy": 延迟加载 -->
    <association property="user" javaType="user" column="uid"
		    select="com.itheima.dao.UserMapper.findById" fetchType="lazy">
      <id property="id" column="uid"/>
      <result property="username" column="username"/>
      <result property="password" column="password"/>
    </association>
  </resultMap>
    
  <select id="findAll" resultMap="orderMapper">
     select * from orders
  </select>
</mapper>

UserMapper.xml映射文件

<mapper namespace="com.itheima.dao.UserDao">
  <!--实现延迟加载的效果, 提供findById查询SQL-->
  <select id="findById" parameterType="int" resultType="user">
       select * from user where id = #{id}
  </select>
</mapper>

java代码执行

public interface OrderMapper {
  public List<Order> findAll();
}

public interface UserMapper {
  public User findById(int id);
}

//测试只查订单信息不查用户信息
public class OrderDemo {
  private SqlSession sqlSession;
  @Before
  public void init() throws IOException {
    InputStream in = Resources.getResourceAsStream("SqlMapperConfig.xml");
    SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
    sqlSession = factory.openSession();
 }
  @After
  public void release() {
    session.commit();
    session.close();
 }
  @Test
  public void findAll() {
    List<Order> orders = mapper.findAll();
    for (Order order : orders) {
       System.out.println(order.getOrdertime()+"---"+order.getTotal());
       //System.out.println(order.getOrdertime()+"---"+order.getUser());
    }
  }
}

10 MyBatis - 延迟加载(案例)

原文:https://www.cnblogs.com/60kmph/p/14051531.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!