JDBC问题分析
数据库配置信息存在硬编码问题,不能灵活配置 (解决思路:配置文件)
频繁创建释放数据库链接,每次的sql执行都需要重新加在驱动,数据库创建链接(解决思路:链接池)
sql语句、设置参数、获取结果集参数均存在硬编码问题(解决思路:配置文件)
逻辑代码和sql代码混合在一起,代码可读性低 (jdbc代码封装)
手动封装返回结果集,较为繁琐(解决思路:反射内省)
自定义持久层框架设计思路
使用端:(项目)引入自定义持久层框架的jar包
配置数据库配置信息、sql配置信息(sql语句、参数、返回类型)
(1)sqlMapConfig.xml 存数据库配置信息,存放在mapper.xml的全路径
(2)mapper.xml 存放sql配置信息
自定义持久层框架本身(工程): 本质是对jdbc代码进行封装
(1)加载配置信息:根据配置文件的路径,加载配置文件成字节输入流,存储在内存中
创建Resource类,方法:InputStream getResourceAsStream(String path)
(2)创建两个javaBean(容器对象): 存放配置文件解析出来的内容
configuration:核心配置类,存放 sqlMapConfing.xml解析出来的内容
mapperStatement: 映射配置类,存放mapper.xml解析出来的内容
(3)解析配置文件:dom4j
创建类: sqlSessionFactoryBuilder 方法 :build(InputStram in )
使用dom4j 解析配置文件,将解析出来的内容封装到容器对象中
创建SqlSessionFactory对象;生产sqlSession:会话对象(工厂模式)
(4) 创建sqlSessionFactory 接口及实现类DefaultSqlSessionFactory
1) open Session 生产sqlSession
(5) 创建SqlSession接口及实现类DefaultSession
定义对数据库的srud操作:selectList()
selectOne()
update()
delete()
(6)创建Executor 接口及实现类SimpleExecutor
query(Configuration,MapperStatement,Object... params);执行jdbc代码