主要是分发了下功能, 执行sql语句避免不了有参数和无参数的, 都让调用有参数的方便管理
文章插图
在执行前, 考虑还有一种情况, 用户不是通过接口代理的方式来执行以上方法, 这样手动输入sqlId容易造成错误
这里做一个健壮性判断
文章插图
BaseExecutor中的query以及queryList做的核心工作
首先这两个方法的特点都是查询, 其步骤基本类似, 所以这里可以合并一起转调query0功能
文章插图
这里需要对参数进行设定, 还根据最后isOne的参数决定返回值是否是单个
文章插图
参数设置这里比较复杂我们通过图解的方式来解释, (注: 参数是List集合类型的和数组类型的没有做!!!)
文章插图
对结果的封装主要用到内省技术和数据库元数据等等知识点
文章插图
2.update&delete&insert做的工作
文章插图
BaseExecutor中的update做的核心工作
还是和query&queryList一样需要设置参数, 不管是增删改其本质其结果都是一致
文章插图
3.getMapper代理模式开发的原理
主要使用的动态代理的技术创建接口的实现类, 内部主要整合了sqlId和参数, 省去用户自己拼sqlId拼错的风险
也同时解决用户手动合参数的麻烦, 但是最终工作的还是selectOne,selectList以及update0这些方法
文章插图
文章插图
文章插图
总结自定义mybatis用的技术点
一款框架的诞生肯定不是一蹴而就的, 随着时间慢慢推进逐步更新出来, 所以一款好的框架肯定要经过
很多考验才能够稳定靠谱, 但是纵观整篇用的技术点, 不难发现框架也是由基础代码编写而来,解决大量重复
的工作, 提供扩展性等等机制,比如本篇用核心的技术点有
① 反射
② 内省
③ 解析xml
④ 动态代理
⑤ 工厂设计模式
等等, 感谢大家耐心阅览, 附件有本篇的原码, 如果有更好的建议和想法欢迎和小编一起探讨交流
推荐阅读
- 中国卖家如何在亚马逊全球开店 中国卖家如何在亚马逊开店铺
- 徐克|在《大宅门》中,白萌堂白老爷生有三个儿子,如何评价白老爷的三个儿子?
- 火车卧铺如何睡得舒服
- 如何度过大学三年生活
- 老年人夏季如何养生?
- 在北京如何乘坐地铁
- 如何认定小微企业
- 如何在Word中新建样式:快速新建样式
- 如何清洗掉身上的纹身? 怎样清洗纹身
- 怎样挑选吉他,买哪种吉他好用 想买吉他如何选择