使⽤端(项目): 引入自定义持久层框架的jar包
    提供两部分配置信息:数据库配置信息,sql配置信息:sql语句,参数类型,返回值类型
    使用配置文件来供这两部分配置信息:

    1. sqlMapConfig.xml : 存放数据库配置信息 存放mapper.xml的全路径
    2. mapper.xml : sql语句的配置⽂件信息

    框架端(工程):本质就是对JDBC代码进行封装
    1.加载配置文件

    1. 加载配置文件:根据配置文件的路径,加载配置文件成字节输入流, 存储在内存中
    2. 创建Resource 方法:InputStream getResourceAsSteam(String path)

    读取完成以后以流的形式存在,我们不能将读取到的配置信息以流的形式存放在内存中,不好操作,可以创建javaBean来存储

    1. 创建两个javaBean ```java 创建两个javaBean:(容器对象):存放的就是对配置文件解析处理的内容

    (1)Configuration : 核心配置类:存放sqlMapConfig.xml解析出来的内容; 存放数据库基本信息、Map<唯⼀标识,Mapper> 唯⼀标识:namespace + “.”+ id (2)MappedStatement:映射配置类:存放mapper.xml解析出来的内容 sql语句、statement类型、输⼊参数java类型、输出参数java类型

    1. 3.解析配置文件:dom4j
    2. ```java
    3. 创建类:sqlSessionFactoryBuilder类 ⽅法:sqlSessionFactory build(inputSteam in)
    4. 第⼀:使⽤dom4j解析配置⽂件,将解析出来的内容封装到容器对象 Configuration和MappedStatement中
    5. 第⼆:创建SqlSessionFactory的实现类DefaultSqlSession对象,生产sqlSerssion :会话对象(工厂模式)

    4.创建SqlSessionFactory接口及实现类DefaultSqlSessionFactotry

    1. ⽅法:openSession() : 获取sqlSession接⼝的实现类实例对象

    5.创建sqlSession接⼝及实现类DeafultSession :主要封装crud⽅法

    1. ⽅法:selectList(String statementId,Object param):查询所有
    2. selectOne(String statementId,Object param):查询单个
    3. selectList() selectOne() update() delete()
    4. 具体实现:封装JDBC完成对数据库表的查询操作

    6.创建Executor接口及实现类SimpleExecutor实现类

    1. query(Configuration,MappedStatement,Object... params) :执行的就是JDBC代码

    涉及到的设计模式:Builder构建者设计模式、⼯⼚模式、代理模式