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();
            }
        }
        
  • 相关阅读:
    为什么obj不等于obj?
    前端基础:深入理解内存空间
    微信小程序之富文本解析
    微信小程序加载更多 点击查看更多
    目前为止最全的微信小程序项目实例
    小程序图文列表一行俩列
    关于小程序 scroll-view 左右横向滑动没有效果(无法滑动)问题
    微信小程序商品筛选,侧方弹出动画选择页面
    小程序-带参跳转页面
    css-background-image 背景图片太大或太小
  • 原文地址:https://www.cnblogs.com/lonske/p/9021209.html
Copyright © 2011-2022 走看看