JDBC回顾之手写JDBC

一、JDBC总结问题:
  • 数据库连接创建、释放频繁造成系统资源浪费,从而影响系统性能
  • SQL语句在代码中硬编码,造成代码不易维护,实际应用中SQL变化的可能较大,SQL变动需要改变java代码
  • 使用prepardStatement向占有位符号传参数存在硬编码,因为SQL语句的where条件不一定,可能多也1可能少,修改SQL还要修改代码,系统不易维护
  • 对结果集解析存在硬编码(查询列名),SQL变化导致解析代码变化,系统不易维护,如果能将数据库记录封装成pojo对象解析比较方便

二、问题解决思路

  1. 使用数据库连接池初始化连接资源
  2. 将SQL语句抽取到xml配置文件中
  3. 使用反射、内省等底层技术,自动将实体与进行属性与字段的自动映射
自定义持久层框架设计思路:
  使用端:(项目):引入自定义持久层框架的jar包
  提供两部分配置信息:数据库配置信息、sql配置信息:sql语句、参数类型、返回值类型
 使用配置文件来提供这两部分配置信息:
  1、sqlMapConfig.xml存放数据库配置信息,存放mapper.xml的全路径
  2、mapper.xml:存放sql配置信息
  自定义持久层框架本身:(工程):本质就是对JDBC代码进行了封装
1、加载配置文件:根据配置文件的路径,加载配置文件成字节输入流,存储在内存中
  创建Resources类 方法:InputSteam getResourcesAsSteam(String path)
2、创建两个javaBean:(容器对象):存放的就是对配置文件解析出来的内容
  Configuration:核心配置类:存放sqlMapConfig.xml解析出来的内容
  MapperdStatement:映射配置类:存放mapper.xml解析出来的内容
3、解析配置文件:dom4j
  创建类:SqlSessionFactoryBuiler 方法:build (InputSteam in)
  第一:使用dom4j解析配置文件,将解析出来的内容封装到容器对象中
  第二:创建SqlSesionFactory对象;生产sqlSesion:会话对象(工厂模式)
4、创建SqlSessionFactory接口及实现类DefaultSqlSessionFacotry
  第一:openSession():生产sqlSession
5、创建SqlSession接口及实现DefaultSesion
  定义对数据库的crud操作:selectList() 、selectOne()、update()、delete()
6、创建Executor接口及实现类SimpleExecutor实现类
  query(Configuration,MappedStatement,Object...params):执行的就是JDBC代码
 
 
 
源码地址:https://gitee.com/jiege0525_admin/handwritten-jdbc

posted @ 2021-05-04 10:08  Jie0525  阅读(461)  评论(0编辑  收藏  举报