第五节 Mybatis底层的JDBC封装
1、Mybatis四大对象
①Executor
②StatementHandler
③ParameterHandler
④ResultSetHandler
2、核心步骤
第五节 Mybatis底层的JDBC封装
1、Mybatis四大对象
SqlSession是一个接口,这里返回的是其实现类DefaultSqlSession的一个实例。其中有一个Executor类型的成员变量。其实进行数据库操作时SqlSession就是一个门面,真正干活的却是Executor。
①Executor
执行器,由它来调度StatementHandler、并由StatementHandler来调度ParameterHandler、ResultSetHandler等来执行对应的SQL。
②StatementHandler
使用数据库的Statemet(PreparedStatement)执行操作
③ParameterHandler
处理SQL参数;比如查询的where条件、和insert、update的字段值的占位符绑定。
select * from t_emp where emp_name like concat(“%”,#{empName},”%”) and sal >=#{minSalary};
insert into t_emp values(null,#{empName},#{empSalary});
update t_emp set emp_name =#{empName},emp_salary=#{empSalary} where emp_id = #{empId}
④ResultSetHandler
处理结果集ResultSet的封装返回。将数据库字段的值赋给实体类对象的成员变量。
执行过程中统领全局的代码都在Executor中,比如下图的doUpdate()是完成insert、update、delete操作的,而doQuery()是完成select操作的。
2、核心步骤
核心步骤就是四步:
第一步:获取数据库连接。
第二步:调用StatementHandler的prepare()方法,创建Statement对象并设置其超时、获取的最大行数等。
第三步:调用StatementHandler的parameterize()方法。负责将具体的参数传递给SQL语句。
第四步:调用StatementHandler的query()/update方法。完成查询/DML操作,并对结果集进行封装处理,然后返回最终结果。