-
Mybatis简单实例
@Test
public void test01() throws IOException {
// 1、获取sqlSessionFactory对象
SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
// 2、获取sqlSession对象
SqlSession openSession = sqlSessionFactory.openSession();
try {
// 3、获取接口的实现类对象
//会为接口自动的创建一个代理对象,代理对象去执行增删改查方法
EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);
//4、执行查询
Employee employee = mapper.getEmpById(1);
System.out.println(mapper);
System.out.println(employee);
} finally {
openSession.close();
}
-
Mybatis四大重要对象
- Executor:用于执行mybatis的增删改查操作
- StatementHandle:处理sql预编译设置参数等相关工作
- ParameterHandle:设置预编译参数用的
- ResultSetHandle:处理结果集
-
源码分析(根据以上1,2,3,4)
- 获取sqlSessionFactory对象:
解析文件的每一个信息保存在Configuration中,返回包含Configuration的DefaultSqlSession;
注意:【MappedStatement】:代表一个增删改查的详细信息
SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
getSqlSessionFactory流程图
- 获取sqlSession对象
返回一个DefaultSQlSession对象,包含Executor和Configuration;
这一步会创建Executor对象;
SqlSession openSession = sqlSessionFactory.openSession();
获取sqlSession
- 获取接口的代理对象(MapperProxy)
getMapper,使用MapperProxyFactory创建一个MapperProxy的代理对象
代理对象里面包含了,DefaultSqlSession(Executor)
EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);
获取接口的代理对象
- 查询流程
Employee employee = mapper.getEmpById(1);
mapper.getEmpById(1)
-
流程总结如图
流程总结
-
插件原理简介
网友评论