zoukankan      html  css  js  c++  java
  • Mybatis_一对多延迟加载

    做联合查询是查处首层实体对象,具体实体对象内部的关联对象只有用到的时候才去查询使用。

    首先在mybatis核心配置文件中配置:

    lazyloadingEnable:true使用延迟加载,false禁用延迟加载。默认为true。

    aggressiveLazyLoading:true启用时不使用延迟加载,false使用延迟加载

    在SQLMapConfig.xml中<configuration>标签下添加

        <settings>
            <!-- 延迟加载的总开关 -->
            <setting name="lazyLoadingEnabled" value="true"/>
            <!-- aggressiveLazyLoading设置成false才是启用延迟加载 -->
            <setting name="aggressiveLazyLoading" value="false"/>
        </settings>

    范例:根据PersonId查订单,使用延迟加载效果

    在personMap.xml写:

        <!-- ============延迟加载============ -->
        <!-- 
        column:主sql查出来的某一列作为参数传递给子sql
        select:子sql的位置,只有id不行,前面还要加上命名空间
        -->    
        <resultMap type="xxx.x.Person" id="selectPersonByIdLazyRM" extends="BaseResultMap">
            <collection property="orderList" column="person_id" select="xxx.x.mapper.OrdersMapper.selectOrdersByIdLazy">
            </collection>
        </resultMap>
        <!-- 主sql: -->
        <select id="selectPersonByIdLazy" parameterType="int" resultMap="selectPersonByIdLazyRM">
            select * from person t where t.person_id = #{personId}
        </select>

    在OrdersMap.xml写:

        <select id="selectOrdersByIdLazy" parameterType="int" resultMap="BaseResultMap">
            select * from orders t where t.person_id = #{personId}
        </select>

    在java中写:

        SqlSessionFactory sessionFactory;
        public void selectPersonByIdLazy() {
            // 创建SqlSession
            SqlSession session = sessionFactory.openSession();
            try {
                //发出主sql
                Person person = session.selectOne("xxx.x.mapper.PersonMapper.selectPersonByIdLazy", 1);
                //发出子sql
                System.out.println(person.getOrderList());
            } catch (Exception e) {
                e.printStackTrace();
                session.rollback();
            } finally {
                session.close();
            }
        }
        
  • 相关阅读:
    动态创建多个pictureBox控件并响应不同的事件
    浅谈程序效率问题
    winform 下实现消息传递机制
    兼容IE的最小最大高度CSS写法
    推荐14款web开源测试工具
    winform程序窗体相关设置
    Mysql配置及错误集合
    深入理解栈
    广而博,深而远
    POJ3009
  • 原文地址:https://www.cnblogs.com/lonske/p/9021209.html
Copyright © 2011-2022 走看看