MyBatis延迟加载

本文介绍了MyBatis的延迟加载机制,通过开启配置文件中的lazyLoadingEnabled设置,可以提高程序效率,减少数据库交互。示例展示了如何将多表关联查询拆分为单表查询,如Student和Classes的查询,只在需要时加载关联数据。延迟加载在满足不同业务需求时动态调整查询范围,有效降低了系统资源消耗。
摘要由CSDN通过智能技术生成

MyBatis延迟加载

延迟加载的定义:

延迟加载也叫懒加载、惰性加载,使用延迟加载可以提高程序的运行效率,针对于数据持久层的操作,在某些特定的情况下去访问特定的数据库,在其他情况下可以不访问某些表,从一定程度上减少了java应用与数据库的交互次数。
例如:
查询学生和班级时,学生和班级是两张不同的表,如果当前需求只需要获取学生的信息,那么查询学生单表即可,如果需要同学生获取对应的班级信息,则必须查询两张表。
不同的业务需求,需要查询不同的表,根据具体的业务需求来动态减少数据表查询的工作就是延迟加载。

在congfig.xml中开启延迟加载
    <settings>
        <!-- 打印SQL-->
        <setting name="logImpl" value="STDOUT_LOGGING"/>
        <!-- 开启延迟加载 -->
        <setting name="lazyLoadingEnabled" value="true"/>
    </settings>
将多表关联查询拆分成多个单表查询

StudentRepository

    Student findByIdLazy(long id);

StudenRepository.xml

<resultMap id="studentMapLazy" type="com.oyrf.frist.Student">
        <id column="id" property="id"></id>
        <result column="name" property="name"></result>
        <association property="classes" select="com.oyrf.repository.ClassessRepository.findByIdLazy" column="cid">
        </association>
    </resultMap>
    <select id="findByIdLazy" parameterType="long" resultMap="studentMapLazy">
        SELECT * from student where id = #{id}
    </select>

ClassesRepository

Classes findByIdLazy(long id);

ClassesRepository.xml

<select id="findByIdLazy" parameterType="long" resultType="com.oyrf.frist.Classes">
        select * from classes where id = #{id}
    </select>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

OYBox

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值