MyBatis-自定义持久层框架IPersistence

一、JDBC问题分析

在这里插入图片描述

  1. 数据库配置信息存在硬编码问题
    解决:配置文件
  2. 频繁创建释放数据库链接
    解决:连接池
    在这里插入图片描述
  3. sql语句、设置参数、获取结果集参数均存在硬编码问题
    解决:配置文件
    在这里插入图片描述
  4. 手动封装返回结果集,较为繁琐
    解决:反射、内省

二、自定义持久层框架设计思路分析

  • 使用端(项目):引入自定义持久层框架的jar包
可以提供两部分配置信息:
	        数据库配置信息
        	sql配置信息(包括sql语句、参数类型、返回值类型)
我们使用配置文件来提供这两部分信息:
           (1)sqlMapConfig.xml:存放数据库配置信息。
           (2)mapper.xml:存放sql配置信息。
( mapper.xml配置文件的全路径可以放在sqlMapConfig.xml,这样的话将配置文件加载成字节输入流时,只需加载sqlMapConfig.xml即可)
  • 自定义持久层框架本身(工程):本质就是对jdbc代码进行封装。

思路:加载配置文件成字节输入流,使用dom4j技术,将使用端的配置文件进行解析,并将解析出来的内容封装到JavaBean中,再将JavaBean层层传递,最后再JDBC代码执行过程中取出信息进行使用

 - 加载配置文件:根据配置文件的路径,加载配置文件成字节输入流,存储在内存中
    实现:创建Resources类,创建方法InputSteam getResourceAsSteam(String path)
    
 - 创建两个JavaBean(容器对象):存放的就是对配置文件解析出来的内容
    实现:
        Configuration(核心配置类):存放sqlMapConfig.xml解析出来的内容
        MappedStatement(映射配置类):存放mapper.xml解析出来的内容
 
 - 解析配置文件:dom4j
 	实现:创建类SqlSessionFactoryBuilder,创建方法build(InputSteam in)
 	步骤:
		 第一:使用dom4j解析配置文件,将解析出来的内容封装到容器对象中
		 第二:创建SqlSessionFactory对象,用于生产sqlSession会话对象
		     (这里使用工厂模式,降低程序之间的耦合,同时可以针对不同的需求生产不同的对象)
		 
 - 创建SqlSessionFactory接口及实现类DefaultSqlSessionFactory
    实现:创建openSession()方法:用于生产SqlSession
     
 - 创建SqlSession接口及实现类DefaultSession
    实现:定义对数据库的crud(增删改查)操作
	 	  selectList、selectOne、update、delete
 
 - 创建Executor接口及实现类SimpleExecutor
    实现:把jdbc的代码提取到SimpleExecutor中
    创建方法query(Configuration, MappedStatement, Object... params):执行的就是JDBC代码

三、自定义持久层框架问题与解决

  • 问题:
  1. Dao层使用自定义持久层框架,存在代码重复,整个操作的过程模板重复(加载配置文件、创建sqlSessionFactory、生成sqlSession)
  2. statementid硬编码问题
  • 解决思路:使用代理模式生成Dao层接口的代理实现类

使用代理开发执行流程在这里插入图片描述
详细代码与视频讲解下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值