mybatis懒加载实现
时间: 2023-12-26 20:28:12 浏览: 156
Mybatis中的延迟加载案例解析
Mybatis懒加载是一种按需加载的机制,可以提高数据库性能。在Mybatis中,懒加载可以通过resultMap中的association和collection来实现。
下面是一个示例,演示了如何在Mybatis中实现懒加载:
1. 首先,在Mybatis的配置文件中开启懒加载功能:
```xml
<configuration>
<settings>
<setting name="lazyLoadingEnabled" value="true"/>
</settings>
</configuration>
```
2. 在Mapper.xml文件中定义resultMap,并设置association和collection的fetchType为lazy:
```xml
<resultMap id="userResultMap" type="User">
<id property="id" column="id"/>
<result property="name" column="name"/>
<association property="department" column="department_id" select="selectDepartmentById" fetchType="lazy"/>
<collection property="roles" column="id" select="selectRolesByUserId" fetchType="lazy"/>
</resultMap>
```
3. 在查询用户信息时,只查询用户表的数据,不关联查询部门和角色信息:
```xml
<select id="selectUserById" resultMap="userResultMap">
SELECT * FROM user WHERE id = #{id}
</select>
```
4. 当需要获取关联的部门和角色信息时,再进行关联查询:
```java
User user = userDao.selectUserById(1);
Department department = user.getDepartment(); // 触发关联查询
List<Role> roles = user.getRoles(); // 触发关联查询
```
通过以上步骤,就可以实现Mybatis的懒加载功能。
阅读全文