真正掌握一个框架源码分析是少不了的~
在讲解整合Spring的原理之前理解原生的MyBatis执行原理是非常有必要的
MyBatis工作流程简述
传统工作模式:
public static void main(String[] args) {
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = factory.openSession();
String name = "tom";
List<User> list = sqlSession.selectList("com.demo.mapper.UserMapper.getUserByName"
,params);
}
创建SqlSessionFactoryBuilder对象,调用build(inputstream)方法读取并解析配置文件,返回SqlSessionFactory对象
由SqlSessionFactory创建SqlSession 对象,没有手动设置的话事务默认开启
调用SqlSession中的api,传入Statement Id和参数,内部进行复杂的处理,最后调用jdbc执行SQL语句,封装结果返回。
使用Mapper接口:
由于面向接口编程的趋势,MyBatis也实现了通过接口调用mapper配置文件中的SQL语句
public static void main(String[] args) {
//前三步都相同
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = factory.openSession();
//这里不再调用SqlSession 的api,而是获得了接口对象,调用接口中的方法。
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> list = mapper.getUserByName("tom");
}
<br /> [Mybatis原理分析(通俗易懂)](https://blog.csdn.net/weixin_43184769/article/details/91126687)