JDBC存在的问题:1、数据库信息采用硬编码方式
2、sql 信息(sql语句、参数、返回值)采用硬编码方式
3、遍历结果集时,存在硬编码,将获取表的字段进行硬编码
解决方案:1、使用 sqlConfig.xml 配置文件配置数据库信息
2、使用 UserMapper.xml 配置文件配置 sql 配置信息
3、使用反射
Mybaits 执行步骤:
1、加载配置文件:根据配置文件的路径,加载配置文件成字节输入流,存储在内存中。
创建 Resources 类, 方法:InputStream getResourceAsStream(String path);
2、解析配置文件(dom4j):
创建类: SqlSessionFactoryBuilder 的 build 方法:build(InputStream in)
第一:使用 dom4j (ConfigParser类、StatementParser类)解析配置文件
➀ 将 sqlConfig.xml 解析出来的内容封装成 Configuration 对象中
➁ 将 UserMapper.xml 解析出来的内容封装成 MapperStatement对象中
第二:创建 SqlSessionFactory 对象;生产 sqlSession :会话对象
3、创建 SqlSessionFactory 接口及实现类 DefaultSqlSessionFactory
第一:openSqlSession():生产 sqlSession
4、创建 SqlSession 接口及实现类 DefaultSqlSession
定义对数据库的 crud 操作:selectList()、selectOne()、insert()、update()、delete()
5、创建 Executor 接口及实现类 SimpleExecutor 实现类
query(Configuration,MapperStatement,Object paramObject....) :执行的就是对 JDBC 的代码
SqlSessionFactoryBuilder ——> build() ——> SqlSessionFactory 对象 ——
备注: sqlConfig.xml 引入 UserMapper.xml 配置文件
Configuration 对象中成员变量 MapperStatement Map 集合