mybatis 延迟加载

MyBatis的延迟加载(Lazy Loading)是一种优化技术,用于在需要时才加载关联对象或集合,从而提高性能和效率。以下是对MyBatis延迟加载的详细介绍:

延迟加载的基本概念

延迟加载是指在第一次访问对象的属性时才加载该对象的数据,而不是在对象创建时就立即加载所有的数据。这样可以避免不必要的数据库访问,减少系统的开销和提高性能。

xml 复制代码
<mapper namespace="com.example.UserMapper">
    <resultMap id="userMap" type="com.example.User">
        <id property="id" column="id"/>
        <result property="username" column="username"/>
        <association property="address" column="address_id" javaType="com.example.Address" fetchType="lazy">
            <id property="id" column="id"/>
            <result property="city" column="city"/>
        </association>
    </resultMap>

    <select id="selectUser" resultMap="userMap">
        SELECT * FROM user WHERE id = #{id}
    </select>
</mapper>

在上面的示例中,User类中的address属性会被设置为延迟加载。

java 复制代码
public class MyBatisExample {
    public static void main(String[] args) {
        SqlSessionFactory sqlSessionFactory = MyBatisUtil.getSqlSessionFactory();
        try (SqlSession session = sqlSessionFactory.openSession()) {
            UserMapper userMapper = session.getMapper(UserMapper.class);
            User user = userMapper.selectUser(1);
            System.out.println(user.getUsername()); // 此时不会加载address
            System.out.println(user.getAddress().getCity()); // 访问address时才会加载address
        }
    }
}


aggressiveLazyLoading属性:



相关推荐
risc1234561 天前
Roaring Bitmap
java·开发语言·mybatis
Wang's Blog1 天前
JavaWeb快速入门: MyBatis入门与实战
java·mybatis
前端炒粉2 天前
马克思主义基本原理在MyBatis框架中的指导作用探析
mybatis·马克思主义
.Hypocritical.2 天前
MyBatis-Plus笔记
mybatis·mybatisplus
折哥的程序人生 · 物流技术专研2 天前
Java面试通关⑩:MyBatis核心源码全集
mybatis·校招·java面试·orm框架·源码解析·数据库交互·社招
SeeYa-J3 天前
MyBatis(数据持久层,❗ “接口 = SQL执行器”)
mybatis
骑士雄师3 天前
java面试题:jvm ,mybatis
java·jvm·mybatis
风中芦苇啊3 天前
Java MyBatis 实战:如何通过 SQL 查询返回 List<Map> 数据格式
java·sql·mybatis
脑子运行超载4 天前
Jackson处理和mybatis的xml转换问题
xml·jackson·mybatis·javatype
杨运交4 天前
[042][数据模块]Mybatis Plus 数据库级租户:基于多数据源路由的动态隔离实现
数据库·oracle·mybatis