一、架构图
二、IDE的快捷键设置(Eclipse)
Ctrl + Shift + T快速打开类型
Ctrl + 鼠标左键单击
Ctrl + T 查看实现类/实现方法
Ctrl + O快速查看和定位类的属性、方法
Ctrl + H全局搜索
Alt + ←代码导航之返回
三、四大组件
1.Executor代表执行器,由它来调度StatementHandler、ParameterHandler、ResultHandler等来执行对应的SQL。
2.StatementHandler作用是使用数据库的Statement(PreparedStatement)执行操作,起到承上启下的作用。
3.ParameterHandler用于SQL对参数的处理。
4.ResultHandler进行最后数据集(ResultSet)的封装返回处理的。
四、执行流程
1、加载配置文件到Configuration
2、构建SqlSessionFactory
3、打开SqlSession会话
4、Executor开始处理请求
5、SqlSource解析SQL语句
6、StatementHandler执行SQL语句
7、ParameterHandler设置参数
8、StatementHandler执行SQL语句
9、ResultSetHandler处理结果集
五、映射数据类型
Configuration.typeHandlerRegistry属性
TypeHandlerRegistry.<init>()注册各种java->数据库的类型处理器
Configuration.typeAliasRegistry属性
TypeAliasRegistry.<init>()注册各种基本类型的别名
六、SQL执行流程
/*获取数据源对象(需要driverclassname、url、username、password)提升创建Connection的性能*/
//获取Configuration对象,从该对象中获取DataSource对象
//有了DataSource对象,就可以从该对象中获取Connection对象
// 加载数据库驱动
Class.forName(driverclassName);
// 通过驱动管理类获取数据库链接connection = DriverManager
connection = DriverManager.getConnection(url,username, password);
/*获取JDBC可以执行的SQL语句,其实此处获取的是BoundSql,此时其实调用的就是SqlSource的SQL解析功能*/
//从BoundSql中获取SQL语句
// 定义sql语句 ?表示占位符
String sql = sqlStr;
//从MappedStatement对象中获取statement的类型:simple、prepared、callable
//根据不同的statement去创建不同的Statement对象
// 获取预处理 statement
preparedStatement = connection.prepareStatement(sql);
/*从BoundSql中获取参数集合信息List<ParameterMapping>
*遍历给参数赋值,先需要读取ParameterMapping中的属性名称从入参对象中获取指定属性的值
*调用JDBC代码,完成属性设置
*设置参数,第一个参数为 sql 语句中参数的序号(从 1 开始),第二个参数为设preparedStatement.setString(1, "王五");执行statemement,并获取结果集ResultSet*/
// 向数据库发出 sql 执行查询,查询出结果集
rs = preparedStatement.executeQuery();
/*从MappedStatement对象中获取输出结果类型,也就是结果要映射的类型
*遍历结果集,获取结果集中每一行的数据
*获取结果集中每一行每一列的数据,获取列的名称
*根据列的名称,通过反射,去设置要映射的java类型的指定属性值*/
// 遍历查询结果集
while (rs.next()) {
System.out.println(rs.getString("id") + " " + rs.getString("username"));
}