zoukankan      html  css  js  c++  java
  • 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。

  • 相关阅读:
    将文件放到Android模拟器的SD卡中的两种解决方法
    Response JSON数据返回
    jAVA 得到Map价值
    【动态规划】leetcode
    思考互联网分布式系统
    Cocos2d-x数据持久-变更数据
    小程序猿都找到了工作经验的方式
    抄360于Launcher浮动窗口的屏幕显示内存使用情况(改进版)
    vb.net窗口继承(房重建知识汇总)
    Spring该讲座
  • 原文地址:https://www.cnblogs.com/oushiyang/p/9039693.html
Copyright © 2011-2022 走看看