mybatis延迟加载的优缺点
Mybatis延迟加载的作用是什么?,在数据库查询过程中,我们经常会遇到一个问题:当我们从数据库中查询出一条记录后,还需要进一步获取与这条记录关联的其他数据,这时,如果直接将这些关联数据一起查询出来,会导致查询结果集过大,增加网络传输负担,甚至可能导致内存溢出,为了解决这个问题,Mybatis提供了延迟加载的功能,延迟加载是指在需要使用关联数据时,才去查询关联数据,而不是一开始就将所有关联数据一起查询出来,这样可以有效地减少查询结果集的大小,提高查询性能。,,Mybatis延迟加载的原理主要是通过配置映射文件或者注解的方式,指定哪些字段需要进行延迟加载,当执行查询操作时,Mybatis会根据配置信息,只查询出需要的字段,而不需要的字段则不会被查询出来,这样,在需要使用关联数据时,只需要再次执行一次查询操作,就可以获取到完整的关联数据。,1、使用 lazyLoadingEnabled属性开启延迟加载,在Mybatis的配置文件中,可以通过设置 lazyLoadingEnabled属性为 true来开启延迟加载功能。,2、使用 fetchType属性指定延迟加载类型,在映射文件中,可以通过设置 fetchType属性来指定延迟加载类型,Mybatis支持以下三种延迟加载类型:, lazyLoadLazyInitialization:懒加载,只有在真正使用关联对象时才会进行初始化;,, lazyLoadEagerInitialization:急加载,当调用getter方法时就立即初始化关联对象;, lazyLoadInitialized:初始化一次,无论是否使用关联对象,都会进行初始化。,1、提高查询性能:通过延迟加载,可以减少一次性查询出的数据量,降低数据库的压力,从而提高查询性能。,2、节省内存资源:由于Mybatis只查询出需要的数据,而不是一次性将所有数据都查询出来,因此可以有效地节省内存资源。,3、简化代码逻辑:通过延迟加载,可以将关联数据的获取与主数据的获取分离,使得代码逻辑更加清晰。,1、Mybatis如何关闭延迟加载?,,答:关闭Mybatis的延迟加载功能,只需将配置文件中的 lazyLoadingEnabled属性设置为 false即可。,2、Mybatis如何自定义延迟加载?,答:除了使用默认的懒加载、急加载和初始化一次三种延迟加载类型外,还可以通过编写插件来自定义延迟加载,具体做法是创建一个实现 org.apache.ibatis.plugin.Interceptor接口的类,并重写其中的 intercept方法,在这个方法中,可以根据需要对查询语句进行修改,实现自定义的延迟加载逻辑。