mybatis流程个人理解
mybatis的配置文件里面有链接数据库的配置 以及mapper的配置
首先 mybatis会使用SqlSessionFactoryBuilder来生产SqlSessionFactory工厂
具体的实现方式
String resource="spring-mybatis.xml";(这个配置文件里面包含了mapper(这里的mapper一般是spring的配置去扫描项目里面后缀名为mapper.xml的文件)和链接数据库的配置)
//加载mybatis 的配置文件(它也加载关联的映射文件)
InputStream is=MybatisUtils.class.getClassLoader().getResourceAsStream(resource);
//构建sqlSession 的工厂
SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(is);
public SqlSessionFactory build(InputStream inputStream, String environment, Properties properties) {
try {
XMLConfigBuilder parser = new XMLConfigBuilder(inputStream, environment, properties);
return build(parser.parse());
} catch (Exception e) {
throw ExceptionFactory.wrapException("Error building SqlSession.", e);
} finally {
ErrorContext.instance().reset();
try {
inputStream.close();
} catch (IOException e) {
// Intentionally ignore. Prefer previous error.
}
}
}
注意我们需要将配置文件转成流传入 ,这样mybatis的XMLConfigBuilder 才可以解析配置文件
然后通过XMLConfigBuilder 会得到包含配置信息的一切东西 比如说链接数据库 和mapper里面的sql(其实就是Configuration这个类里面会把配置文件里面的信息解析给你列好,
mybatis进行的所有操作都需要根据Configuration中的信息来进行,废话里面都是sql啊什么的)
接着上面说,我们生成了SqlSessionFactory工厂,这个工厂里面我们已经得到了配置文件的信息,
同时这个工厂里面除了有配置信息以外,还有SqlSession这个对象,SqlSession中有我们进行数据库操作的增删改查接口
sqlsessFactory接口
public interface SqlSessionFactory {
SqlSession openSession();
SqlSession openSession(boolean autoCommit);
SqlSession openSession(Connection connection);
SqlSession openSession(TransactionIsolationLevel level);
SqlSession openSession(ExecutorType execType);
SqlSession openSession(ExecutorType execType, boolean autoCommit);
SqlSession openSession(ExecutorType execType, TransactionIsolationLevel level);
SqlSession openSession(ExecutorType execType, Connection connection);
Configuration getConfiguration();
}
这个时候我们已经得到了配置的信息,最后我们就要开始执行了,这个时候我们建立好了链接,然后把sql拿进去,去调用mybatis的执行器就是
Executor这个接口,主要提供了update、query方法及事物相关的方法接口,我们SqlSession 对象会根据配置文件传入的执行器类型,然后去调用各种对应的方法去执行,
具体的实现方法我也不是太清楚这里留个链接有兴趣的可以去看看,https://blog.csdn.net/qq924862077/article/details/50437096。