首页 > 代码库 > 关于mybatis延迟加载总结
关于mybatis延迟加载总结
关于延迟加载设置应该有很多地方都有说明这里也啰嗦一下,在mybatis配置文件中加入
<settings>
<setting name="mapUnderscoreToCamelCase" value="http://www.mamicode.com/true" />
<setting name="lazyLoadingEnabled" value="http://www.mamicode.com/true"/>
<setting name="aggressiveLazyLoading" value="http://www.mamicode.com/false"/> <!-- 按需加载对象 -->
</settings>
这里配置了一般都可以进行延迟加载,啥时候加载呢,一般是在我们调用对象的get方法是才进行加载,
下面对一些细节设置进行一个说明
比如我需要知道部门的用户 我们会在部门对象中添加
private List<User> roleUsers;
在该对象对应的mybatis mapper文件中resultMap中添加
<collection property="roleUsers" column="ID" javaType="ArrayList" ofType="User"
select=".dao.User.getByRoleId"></collection>
在查询select中有个resultType 和resultMap 这里需要用resultMap ,用resultType 的话roleUsers会为空
一般在Role对象中在roleUsers上加@Transient注释(不做持久化),如果roleUser也要在前台输出,则在数据转成json的时候自动调用get方法,会加载roleUsers数据,如果不需要加载roleUsers数据则在该属性上加@JSONField(serialize=false)注释就可以;
关于mybatis延迟加载总结