最近几天学习了mybatis框架
myBatis是一个orm映射框架 是一个访问数据库的一个持久层框架
在学习的过程中遇到了很多问题 由于上课没怎么集中注意力听 导致下课花费了很多时间去理解 和弄懂 不得不说上课认真听讲还是有必要的 mybatis的前两节课感觉还可以 就是后面讲集合映射的时候弄的头都昏了 将关联查询和嵌套查询弄反了 导致写练习的时候出了很多错误 找了好久才知道是我理解错了 但是还好 这两天感觉都弄懂了些 有错误反而使我更加深刻的了解mybatis的内部机制了
问题总结:
- 一对一, 一对多,多对多关联映射
连接查询:直接书写表连接的SQL语句
关联查询:通过association和collection标签中的select属性调用其它映射文件中的命令
因为采用关联查询会带来N+1的问题
什么是N+1的问题?
当进行关联查询时,默认会将当前对象以及它的关联对象一并查出,会执行N+1条SQL语句,但是一些情况下,我们并不需要查询关联的对象,也会生成N条查询语句,这样就降低了数据库的性能。
如何解决N+1的问题?
连接查询,只会生成一条查询语句
延迟检索,默认不会将关联对象查出,只有在需要时才能查询关联对象
2.mybatis的检索策略
延迟加载(延迟检索,懒加载,lazy)
在查询当前对象时,默认不会将该对象关联的对象一并查出,当访问该关联对象时,才会查询,这种策略称为延迟检索。
立即加载(即时检索,eager)
在查询当前对象时,默认将该对象关联的所有对象查出。
如何配置?
- 在mybatis-config.xml全局配置文件中,
- 在用到延迟加载的association和collection标签中,
在以后的学习中 要更加努力 不能贪玩 加强学习力 加油吧 !