带着疑问去学习Mybatis的工作过程

背景
  • 记录应该理解Mybatis核心问题是哪些
过程
  • 如何在项目中引入Mybatis Mybatis的groupId是什么?artifactId又是什么?目前最新版本是多少?
  • 如何从xml中构建 SqlSessionFactory?SqlSessionFactory的作用是什么?
  • xml配置了哪些信息?用什么方式解析xml的?
  • xml里的标签都是什么意思:configuratio、environments、transactionManager、dataSource、mappers。这些标签的属性分别是什么意思?
  • DataSourceFactory、DataSource、TransactionFactory、Environment、Configuration这些类的作用是什么?
  • Mapper接口的作用是什么?
  • 如何从 SqlSessionFactory 中获取 SqlSession?SqlSession的作用是什么,提供了哪些功能?
  • selectOne和getMapper的执行方式有什么区别?
  • Mapper.xml的配置是什么?命名空间的作用是什么?id的作用是什么?
  • Mapper.xml是如何和Mapper.java进行binding的?匹配规则是什么?
  • SqlSessionFactoryBuilder应该在哪个作用域使用?为什么?
  • SqlSessionFactory应该在哪个作用域使用?为什么?
  • SqlSession应该在哪个作用域使用?为什么?
  • Mapper实例应该在哪个作用域使用?为什么?
  • 插件工作过程是什么样的?分页插件是怎么工作的?
  • 一级缓存和二级缓存的工作过程是怎样的?
  • 用到了哪些设计模式?
  • 架构设计,分离的功能模块有什么启发吗?
  • 有哪些部分可以做的优化?
  • 如果自己去封装jdbc操作数据库的功能,会设计哪些大的模块?
  1. 会做到像源码那样的解耦吗?会考虑到基础层,数据处理层,屏蔽底层复杂度提供抽象api给开发使用
  2. 是否会考虑到通过责任链的方式扩展功?
  3. 是否能够面向接口编程,这样能够获取到其他更好的实现,比如能够把事务交给spring进行管理是因为mybatis在事务处是面向接口编程的。
  4. 是否有足够自信去做设计呢?
小结
  • 有一个观点是对的那就是:读代码,读大量的代码。因为这样可以学到别人写作方式。

  • 但是,比如研究spring源码,mybatis源码,前提是自己熟练使用,知道很多基础概念,在这个基础之上去阅读代码。而不是一开始就去读。去读一定是建立在自己熟练掌握了框架的基本使用。

  • 而且去读的时候,一定是带着疑问去探寻,一点一点找疑问的答案。找到了答案,也就是大致慢慢理解了源码的工作。理解了工作过程,只是会加快解决问题的效率,并不是说,可以让自己能够写框架了,这个还早的很,还得练。

  • 贪多嚼不烂的。一个还没有深入理解,又急急忙忙搞下一个,又累,又没有效果。搞完一个,就挨着把自己理解的整个业务逻辑过程总结写出来。只有自己写出来,理解了,才算自己的,否则,一切又有什么意义呢?

  • 能够做到,用自己的话,自己的理解把上面的疑问直接表述出来。

  • 套路

  1. 还是要先读官方技术文档。
  2. 写一些小demo
  3. 运用到实践项目中,体会细节,体会犯错
  4. 然后循环即可
  5. 直到有一天,自己去探险源码。
  • 探寻源码好处
  1. 大量读代码,能够提高读代码能力
  2. 能够学到别人写作方式
  3. 能够辅助自己加深对设计模式理解,java基础知识理解
  4. 能够知道别人考虑的点。异常处理。日志处理。安全处理。兼容处理。扩展处理。配置处理。池化和非池化处理。缓存处理。解耦处理。架构处理。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值