mybatis延迟加载是为什么(mybatis延迟加载的原理)
-
-
类目:知识大全
-
联系人:
-
微信号:
-
Q Q 号:
-
手机号:
-
浏览量:
323
【商户信息】
【货源详情】
一. Mybatis延迟加载策略
1.1什么是延迟加载?
延迟加载:仅在需要数据时加载,不需要数据时不加载数据。 延迟加载也称为懒惰加载。
优点:首先从单个表中查询,然后根据需要从关联表中查询,大大提高了数据库的性能。 这是因为对单个表的查询比将多个表相关联更快。
缺点:由于只有在需要使用数据的情况下才能进行数据库查询,因此对于大量的数据查询,查询工作也很费时间,因此可能会增加用户的等待时间,降低用户体验。
1.2实现需求:
要求:查询帐户信息并关联用户信息。 首先查询账户信息可以满足要求,但如果需要查询用户信息,则查询用户信息。 对用户(User )信息的按需呼叫是延迟加载。
1.3关联延迟加载:
1.3.1账户持久层DAO接口:
1.3.2账户持久层映射文件:
1.3.3用户持久层接口和映射文件:
1.3.4打开my batis延迟加载策略:
必须将延迟加载配置文件添加到Mybatis配置文件SqlMapConfig.xml文件中。
1.3.5制定测试方法
1.4collection延迟加载:
1.4.1将ListAccount属性添加到用户实体类
1.4.2如何创建用户和帐户持久层接口
1.4.3创建用户持久层映射配置:
1.4.4创建帐户持久层映射配置:
1.4.5制定测试方法
二. Mybatis缓存
2.1 Mybatis缓存: l1缓存是SqlSession范围内的缓存,调用SqlSession更改、添加、删除、commit (,close )等方法时会清空l1缓存。
2.2 Mybatis缓存:二级缓存是映射级别的缓存,多个SqlSession使用同一映射的sql语句。 多个SqlSession可以共享二级缓存,二级缓存在SqlSession之间共享。
2.2.1打开和关闭缓存:
2.2.1.1步骤在SqlMapConfig.xml文件中打开二级缓存
2.2.1.2步骤2 :配置相关的Mapper映射文件
2.2.1.3在步骤statement上配置useCache属性
2.2.2缓存注意事项:使用二级缓存时,缓存的类必须实现java.io.Serializable接口,以便可以使用序列化方法存储对象。
第三章Mybatis注释开发
3.1 mybatis一般评论:
@Insert:实现新功能
@Update:实现更新
@Delete:删除
实现@Select:查询
@Result:实现结果集的封装
@Results:可以与@Result一起使用来封装多个结果集
@ResultMap:实现参考
封装@Results定义
@One:实现一对一的结果集封装
@Many:实现一对多结果集的封装
@SelectProvider:的动态SQL映射
@CacheNamespace:实现注释二级缓存的使用
使用3.2mybatis注释实现基本CRUD :
3.2.1创建实体类
3.2.2采用注释方式开发持久层界面:
3.2.2.1询问所有用户:
根据3.2.2.2询问用户:
3.2.2.3保存和更新操作:
3.2.2.4删除操作和聚合函数的使用
3.2.2.4模糊查询操作:
3.2.3创建sqlmap配置文件
3.2.4制定测试方法
3.3使用注释的复杂关系映射开发:
3.3.1复杂关系映射注释说明:
3.3.2使用注释实现复杂的一对一关系映射和延迟加载:
需求:加载账户信息时,且加载该账户的用户信息,可根据情况实现延迟加载。 (实现评论方式)
3.3.2.1添加用户实体类和帐户实体类:
3.3.2.2添加账户持久层界面,使用注释进行配置
3.3.2.3添加用户持久层界面,使用注释进行配置:
3.3.2.4测试一对一关联和延迟加载
3.3.3使用注释实现一对多复杂的关系映射:
需求:查询用户信息时,还必须查询他的账户列表。 用注释的方式实现。
分析:由于一个用户拥有多个帐户信息,因此形成了用户(User )与帐户之间的一对多关系。
3.3.3.1加入用户实体类ListAccount :
3.3.3.2创建用户持久层界面,并使用注释进行部署
@Many:
select属性:表示要执行的sql语句
fetchType属性:表示加载方法,通常在延迟加载时设置为LAZY值
3.3.3.3创建帐户持久层界面,并使用注释进行部署
3.3.3.4添加测试方法