• 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();
            }
        }
        
  • 相关阅读:
    linux shell基本知识
    chkconfig命令 centos 开机启动命令
    centos 7修改网卡名称
    centos 系统安装基本步骤,面试必考
    nginx 服务脚本编写模板
    nginx 服务脚本编写模板
    Mysql 多实例实施步骤
    shell常用监控脚本
    nginx做负载均衡 tomcat获得客户端真实ip
    vmvare安装系统提示vmci.sys 版本不正确解决方法
  • 原文地址:https://www.cnblogs.com/lonske/p/9021209.html
Copyright © 2020-2023  润新知