MyBatis的延迟加载
2023-12-25 21:24:19
什么是延迟加载
开启延迟加载后,在真正使用数据的时候才发起级联查询,不用的时候不查询。
mapper
在接口UserDao中封装一个方法:
public interface UserDao {
User getUserByid1(Integer id);
}
在对应的配置文件UserDao.xml中:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--namespace:唯一,接口全类名-->
<mapper namespace="com.by.dao.UserDao">
<resultMap id="getUserById1Result" type="user">
<id column="id" property="id"></id>
<result column="username" property="username"/>
<result column="address" property="address"/>
<result column="sex" property="sex"/>
<result column="birthday" property="birthday"/>
<!--延迟加载的一对多-->
<!--
property:属性名
ofType:泛型 返回类型
select: 要调用的 select 映射的 id
column : 传递给 select 映射的参数
fetchType="lazy":懒加载,默认情况下是没有开启延迟加载的
-->
<collection property="account" ofType="account" select="com.by.dao.AccountMapper.selectAccountByUid"
column="id" fetchType="lazy" ></collection>
</resultMap>
<select id="getUserByid1" parameterType="int" resultMap="getUserById1Result">
SELECT *
FROM USER
WHERE id = #{id}
</select>
</mapper>
其中的select属性com.by.dao.AccountMapper是全类名,如果要查询用户的Account中的属性,sql语句要在AccountMapper.xml中写,selectAccountByUid是查询语句的ID值
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.by.dao.AccountMapper">
<select id="selectAccountByUid" parameterType="int" resultType="account">
select *
from account
WHERE uid = #{uid}
</select>
</mapper>
测试类:
public void testFindAll() throws IOException {
//返回接口的代理类
UserDao userDao = sqlSession.getMapper(UserDao.class);
User user =userDao.getUserByid1(43);
System.out.println(user.getUsername());
List<Account> accountList = user.getAccount();
for (Account account:accountList){
System.out.println(account);
}
}
文章来源:https://blog.csdn.net/m0_64107427/article/details/135159824
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!