学网站建设需要下载什么,哈尔滨网站建设外包公司,打广告的免费软件,wordpress创建分站点懒加载是什么#xff1f; 按需加载所需内容#xff0c;当调用到关联的数据时才与数据库交互否则不交互#xff0c;能大大提高数据库性能#xff0c;并不是所有场景下使用懒加载都能提高效率。 Mybatis懒加载#xff1a;resultMap里面的association、collection有延迟加载功…懒加载是什么 按需加载所需内容当调用到关联的数据时才与数据库交互否则不交互能大大提高数据库性能并不是所有场景下使用懒加载都能提高效率。 Mybatis懒加载resultMap里面的association、collection有延迟加载功能
懒加载针对什么使用为什么要用懒加载 懒加载针对级联使用的懒加载的目的是减少内存的浪费和减轻系统负担。 举例
查询所有用户信息其下有多个收货地址
select b.id ,b.userName,b.userCode,a.*
from smbms_address a right join smbms_user b on a.userId b.id
进行分步查询当我需要查看地址的时候加载收货地址信息
-- 查询所有用户信息
select * from smbms_user
-- 查询地址信息
select * from smbms_address where userId #{id}
以上为单表查询效率相对于大数据量的关联查询要高
Mybatis懒加载实例
1、在 Mybatis 主配置文件中开启懒加载
?xml version1.0 encodingUTF-8 ?
!DOCTYPE configurationPUBLIC -//mybatis.org//DTD Config 3.0//ENhttps://mybatis.org/dtd/mybatis-3-config.dtd
configuration!--引入properties文件--properties resourcedatabase.properties/properties!--配置打印sql语句--settingssetting namelogImpl valueSTDOUT_LOGGING/!--在mybatis主配置文件中关闭自动映射--!--NONE FULL全映射--setting nameautoMappingBehavior valueFULL/!-- 开启懒加载(延迟加载) --setting namelazyLoadingEnabled valuetrue//settings!--起别名--typeAliasespackage namecom.hz.pojo//typeAliases!--可以起多个environments--environments defaultsmbmsenvironment idsmbmstransactionManager typeJDBC/dataSource typePOOLEDproperty namedriver value${driver}/property nameurl value${url}/property nameusername value${user}/property namepassword value${password}//dataSource/environment/environmentsmappersmapper resourcemappers/AddressMapper.xml/mapper resourcemappers/UserMapper.xml//mappers/configuration 2、创建实体类等
package com.hz.pojo;import lombok.Data;import java.io.Serializable;
import java.util.List;Data
public class User implements Serializable {private Long id; //idprivate String userCode; //用户编码private String userName; //用户名称private String userPassword; //用户密码private Integer gender; //性别private String birthday; //出生日期private String phone; //电话private String address; //地址private Integer userRole; //用户角色private Integer createdBy; //创建者private String creationDate; //创建时间private Integer modifyBy; //更新者private String modifyDate; //更新时间private Role role; //用户角色对象private ListAddress addressList; //收货地址集合}package com.hz.pojo;import lombok.*;Setter
Getter
NoArgsConstructor //无参构造方法
AllArgsConstructor //有参构造方法
ToString
public class Address {private Long id; //主键IDprivate String postCode; //邮编private String contact; //联系人private String addressDesc; //地址private String tel; //联系电话private Integer createdBy; //创建者private String creationDate; //创建时间private Integer modifyBy; //更新者private String modifyDate; //更新时间private User user; //所属用户对象}
3、创建Dao接口和XML文件 !--懒加载--resultMap iduserMap1 typeUserid propertyid columnid/!-- 一对多 对象套集合 --collection propertyaddressList columnid ofTypeAddress selectgetAdd fetchTypelazyid propertyid columnid//collection/resultMapselect idfindUserList1 resultMapuserMap1select * from smbms_user/selectselect idgetAdd resultTypeAddressselect * from smbms_address where userId #{id}/select因为 User表与 Address表 是一对多关联所以使用resultMap的collection映射在collection标签中添加属性fetchType属性值为lazy表示懒加载。
4、测试 Testpublic void findUserList1() {SqlSession sqlSession MyBatisUtil.createSqlSession();UserDao userDao sqlSession.getMapper(UserDao.class);ListUser userList userDao.findUserList1();for (User u :userList) {System.out.println(userName:u.getUserName());}//调用地址
// ListUser userList userDao.findUserList1();
// for (User u :userList) {
// ListAddress addressList u.getAddressList();
// System.out.println(userName:u.getUserName());
// for (Address address :addressList) {
// System.out.println(addressName:address.getContact());
// }
// }}
只查询 UserName 结果如下 组合查询时 结果如下