您的位置:首页 > 其它

关于mybatis延迟加载总结

2014-10-20 11:32 453 查看
关于延迟加载设置应该有很多地方都有说明这里也啰嗦一下,在mybatis配置文件中加入

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<setting name="mapUnderscoreToCamelCase" value="true" />
<setting name="lazyLoadingEnabled" value="true"/>
<setting name="aggressiveLazyLoading" value="false"/>  <!-- 按需加载对象 -->
</settings>
</configuration>


这里配置了一般都可以进行延迟加载,啥时候加载呢,一般是在我们调用对象的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)注释就可以;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: