**
都知道我们的Mybatis是接口加xml的方式,这个接口我们并没有实现它,可是我们却可以直接调接口的方法操作数据库,其中的原理到底是为什么呢?*
看了源码才发现,是动态代理。
*
先来一段熟悉的代码,从这里也可以是我们源码的入口
public void test() throws IOException{
InputStream inputStream = Resources.getResourceAsSteream("mybatis-config.xml");
//读取mybatis配置文件创建SqlssionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
inputStream.close();
//获取sqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
//获取对应的mapper
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
//执行查询语句并返回结果
User user = mapper.selectById(1);
}
**
这个过程我用一个简单的调用过程图来描述,根据这些圆角矩形找到相应的类跟一下即可清楚主要的流程
**