前言

上一篇文章讲到了JDBC的基本用法及其问题所在,并提出了使用Mybatis的好处,那么今天这篇文章就来说一下该如何设计一个类似Mybatis这样的持久层框架(暂时只讲思路,具体的代码编写工作从下一篇文章开始)。

从使用端的角度来设计

从使用端的角度来看,我们需要做一些配置工作,原理等同于使用Mybatis框架时所进行的配置。这其中包括以下步骤:

  1. 引入自定义持久层框架的jar包。
  2. 提供存放数据库核心配置的信息。
  3. 提供sql配置信息(包括sql语句、参数类型和返回类型)。

这里暂时不讲这些工作的具体实现方法,等后面自定义持久层框架编写完成了,再来进行这些配置工作,并编写相应的dao层、实体层及测试类。

从框架端的角度来设计

设计持久层框架,本质上是对JDBC代码进行封装,因此我们需要做这样一些工作:

  1. 既然是跟数据库相关的框架,那么第一步肯定是要先连接上数据库。因此我们首先要读取存放数据库核心配置信息和sql配置信息的配置文件,也就是根据配置文件的路径,加载配置文件成字节输入流,存储在内存中。当然,我们不能一直将读取到的配置信息以流的形式存储在内存中,这样操作起来很不方便。我们可以创建两个javaBean:Configuration和MappedStatement,讲解析出来的核心配置信息和sql配置信息分别存放在这两个容器对象中。
  2. 上面提到了解析配置文件,这里来讲一下具体的实现思路。这里我们需要用到Java的XML应用程序编程接口:dom4j对两类配置文件进行解析,讲解析出来的内容封装到容器对象Configuration和MappedStatement中。
  3. 创建SqlSessionFactory接口及其实现类,获取数据库核心配置信息参数,生产sqlSession。
  4. 创建sqlSession接口及其实现类,用于封装数据库CRUD操作的相关方法,包括增删查改。
  5. 创建Executor接口及其实现类,用于调用JDBC的增删查改方法。

总结

本篇我们分别从使用端和框架端的角度阐述了自定义持久层框架的设计思路,对于程序员来说,光说原理而不写代码是很枯燥的,从下一篇开始,我们正式用边写代码、边分析原理的方法来讲解如何自定义一个持久层框架。

最新文章

  1. [LeetCode] Convert Sorted Array to Binary Search Tree 将有序数组转为二叉搜索树
  2. 向苹果App Store提交新应用的图文教程(转)
  3. HTML学习笔记——frameset和marquee
  4. ASP.NET URL伪静态重写实现方法
  5. ATL一:CWindowImpl
  6. ORACLE DATAGURARD配置手记
  7. 佛山Uber优步司机奖励政策(2月1日~2月7日)
  8. Visual Studio 2013 RTM 中文语言包官方下载地址发布
  9. 对Spring.Net+NHibenate+Asp.Net Mvc+Easyui框架的个人认识
  10. Linux服务器挂死案例分析
  11. CPUImageRGBFilter 实现
  12. Redis从入门到精通:中级篇
  13. 聊一聊快速排序(Js)
  14. 20170821xlVBA隐藏空行
  15. 廖雪峰Java2面向对象编程-5包和classpath-1静态字段和方法
  16. 记一次服务器迁移后的nginx启动问题
  17. Python2.7-浙江省实时天气爬取
  18. EBS开发附件上传和下载功能(转)
  19. SharePoint 企业搜索-PowerShell
  20. VMware Workstation and Device/Credential Guard are not compatible

热门文章

  1. Dart 学习
  2. python之模块与类库
  3. C语言变量及其生命周期
  4. ASP.Net Core中处理异常的几种方法
  5. 学习笔记-json数据格式化
  6. Windows10家庭版安装docker
  7. Redis解读(2):Redis的Java客户端
  8. Java执行groovy脚本的两种方式
  9. babel配置文件.babelrc详解
  10. 06_pytorch的autograd操作