mybatis分步查询,懒加载未生效问题

本文介绍MyBatis中懒加载的配置方法及其在一对多查询中的应用,通过实例展示了如何实现分步查询以提高查询效率,并确保只有当确实需要关联数据时才进行加载。

mybatis分步查询,懒加载未生效问题

1.背景:

在mybatis的一对多查询中,collection可以步骤查询,即一对多场景,如果需要多,则先查一(省份),再查多(省份对应的所有城市)。如果仅仅查看(getProvinceName())一的某个属性,暂时不用多(省份对应的所有城市),则城市不应该被查询,即懒加载要生效

懒加载应该生效的场景

 Province province = cityService.queryCityByProIdStep(proId);
        if (province != null) {
            System.out.println(province.getProName());
        }

分步查询:先查省份,再查省份对应的所有城市

 Province province = cityService.queryCityByProIdStep(proId);
        if (province != null) {
            System.out.println(province.getProName());
            System.out.println(province.getCityList());
        }

2.解决

懒加载的配置application中,全局生效
mybatis.configuration.lazy-loading-enabled=true
mybatis.configuration.aggressive-lazy-loading=false

或者fetchType=“lazy”,仅仅这个Mapper.xml懒加载生效

 <collection property="cityList"
                    ofType="com.jd.lean.mjp.dal.entity.City"
                    select="com.jd.lean.mjp.dal.mapper.CityMapper.queryCitysByProId"
                    column="{ppid = ProID}" fetchType="lazy"
        />
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值