延迟加载/懒加载
由于在mybatis的配置中存在一对一或者一对多的映射关系,比如查询用户的时候,个别时候需要查询用户的角色,但为了提高查询效率,可以使用延迟加载,什么时候使用什么时候去查询。
*使用步骤:
a.在配置文件中,设置允许懒加载
b.添加jar包
c.使用延迟加载查询的SQL,不能使用连接查询
d.先编写查询角色信息的方法,方法参数是角色id
RoleDao
public List<UserRole> getuserRoleById(int id);
RoleMapper.java
<!-- 懒加载的时候,当需要查询用户角色信息的时候调用此SQL语句 -->
<select id="getuserRoleById" parameterType="int" resultType="UserRole">
select id, roleCode, roleName
from smbms_role
where id = #{id}
</select>
UserDao.java
//使用懒加载获取角色
public List<User> getUserByLazy();
UserMapper.xml
<!-- 懒加载地址 -->
<collection property="addresses" ofType="Address"
select="cn.qf.smbms.dao.AddressDao.getAllAddressInfo"
column="addresses">
</collection>
</resultMap>
<select id="getUserAddrByLazy" resultMap="userMap5">
select id, userName, userCode, userRole, address, phone
from smbms_user
</select>
UserService.java
public List<User> getUserByLazy(){
SqlSession session = MyBatisUtil.getSqlSession();
List<User> users = session.getMapper(UserDao.class).getUserByLazy();
MyBatisUtil.closeSqlSession(session);
return users;
}