本文主要是介绍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"/>
这篇关于mybatis分步查询,懒加载未生效问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!