手写自己的MyBatis框架-操作流程
1、定义接口Mapper 和方法,用来调用数据库操作。
Mapper 接口操作数据库需要通过代理类。
2、定义配置类对象Configuration。
3、定义应用层的API SqlSession。它有一个getMapper()方法,我们会从配置类Configuration 里面使用Proxy.newProxyInatance()拿到一个代理对象MapperProxy。
4、有了代理对象MapperProxy 之后,我们调用接口的任意方法,就是调用代理对象的invoke()方法。
5、代理对象MapperProxy 的invoke()方法调用了SqlSession 的selectOne()。
6、SqlSession 只是一个API,还不是真正的SQL 执行者,所以接下来会调用执行器Executor 的query()方法。
7、执行器Executor 的query()方法里面就是对JDBC 底层的Statement 的封装,最终实现对数据库的操作,和结果的返回。
基于我们总结的这个框架的主要工作流程,接下来我们就要动手去写这个框架了。
我们先给它起个名字叫MeBatis。
手写自己的MyBatis框架-操作流程相关推荐
- 手写自己的MyBatis框架-SqlSession
我们已经分析了MeBatis 的主要对象和操作流程,应该从哪里入手? 当我们在psvm 操作的时候,第一个需要的对象是SqlSession.所以我们从应用层的接口SqlSession 入手. 那么我们 ...
- 手写自己的MyBatis框架-Executor
到了sqlSession 的selectOne()方法,这里我们要去调用Executor 的query()方法,这个时候我们必须传入SQL 语句和参数(根据statementId 获取). 问题来了: ...
- 手写自己的MyBatis框架-这个框架需要解决什么问题?
老王给我看了一段JDBC 的代码: rs.close(); stmt.close(); conn.close(); 1)它需要实现对连接资源的自动管理,也就是把创建Connection.Stateme ...
- 手写自己的MyBatis框架-V2.0 可优化之处
1 .在ResultSetHandler 中, 类型处理都是写死的, 能不能创建一个TypeHandler,把这些关系维护起来,处理所有类型的转换关系和自定义类型: 2.只实现了@Select 的注解 ...
- 手写自己的MyBatis框架-V2.0配置文件
创建了全局配置文件mybatis.properties,存放SQL 连接信息.缓存开关.插件地址.Mapper 接口地址. 全局配置文件在Configuration 配置类的构造器中解析.
- 手写自己的MyBatis框架-核心对象
1.存放参数和结果映射关系.存放SQL 语句,我们需要定义一个配置类: 2.执行对数据库的操作,处理参数和结果集的映射,创建和释放资源,我们需要定义一个执行器: 3.有了这个执行器以后,我们不能直接调 ...
- 手写自己的MyBatis框架-支持插件
定义了一个@Intercepts 注解,目前还只能拦截Executor 的方法,所以属性只要配置方法名称. 定义Interceptor 接口,是所有自定义插件必须实现的接口. 定义Intercepto ...
- 手写自己的MyBatis框架-支持查询缓存
定义了一个CachingExecutor , 当全局配置中的cacheEnabled=true 时,Configuration 的newExecutor()方法会对SimpleExecutor 进行装 ...
- 手写自己的MyBatis框架-支持注解配置SQL
定义了一个@Select 注解,加在方法上. 在Configuration 构造函数中的parsingClass() 中解析, 保存在mappedStatements 中(一个HashMap). 注意 ...
最新文章
- 什么是区块链钱包?区块链钱包如何运作?
- 从Windows计算机上完全删除iTunes和其他Apple软件
- mysql定义条件和处理_mysql sql存储过程条件定义与处理
- Python中浅拷贝和深拷贝的理解与研究
- 多个蓝牙缺陷可使攻击者假冒合法设备
- 几种在Linux下查询外网IP的办法(转)
- 从0开始学习C#第二天
- unix环境高级编程(第三版)-读书笔记1
- 数字电视 frontend tuner demod
- 2.1简单计算问题的求解
- 利用red5搭建一个简单的流媒体直播系统(ubuntu 12.10)
- STM32毕业设计题目大全
- canvas 画布标签
- pe结构分析之手工修复导入表
- J2SE:总结—基础很重要哈!
- 如何写出更优雅的代码——编程范式简述
- Java项目开发如何设计整体架构
- 如何批量OCR识别各类票据关键信息,导出为结构化格式数据
- 呀!原来这就是前端监控系统
- Deploy k8s(1.25)
热门文章
- [翻译:更新]Understanding Linux Network Internals - Table of Contents
- Java全套零基础视频教程,2019最新编程
- 零基础自学Java变成能成吗?前景如何
- 通过lseek产生空洞文件
- UVALive 7143 Room Assignment(组合数学+DP)(2014 Asia Shanghai Regional Contest)
- C-C Primer Plus阅读笔记
- Visual C# 2008+SQL Server 2005 数据库与网络开发--13.1.3 简单记事本程序菜单设计
- xajax中的中文乱码问题
- 【大话数据结构算法】归并排序
- bind()、call()、apply()理解及用法