美文网首页
Mybatis源码分析

Mybatis源码分析

作者: hcq0514 | 来源:发表于2018-09-12 17:44 被阅读0次
    • 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四大重要对象

    1. Executor:用于执行mybatis的增删改查操作
    2. StatementHandle:处理sql预编译设置参数等相关工作
    3. ParameterHandle:设置预编译参数用的
    4. ResultSetHandle:处理结果集
    • 源码分析(根据以上1,2,3,4)

    1. 获取sqlSessionFactory对象:
      解析文件的每一个信息保存在Configuration中,返回包含Configuration的DefaultSqlSession;
      注意:【MappedStatement】:代表一个增删改查的详细信息
    SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();  
    
    getSqlSessionFactory流程图
    1. 获取sqlSession对象
      返回一个DefaultSQlSession对象,包含Executor和Configuration;
      这一步会创建Executor对象;
    SqlSession openSession = sqlSessionFactory.openSession();
    
    获取sqlSession
    1. 获取接口的代理对象(MapperProxy)
      getMapper,使用MapperProxyFactory创建一个MapperProxy的代理对象
      代理对象里面包含了,DefaultSqlSession(Executor)
             EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);
    
    获取接口的代理对象
    1. 查询流程
       Employee employee = mapper.getEmpById(1);
    
    mapper.getEmpById(1)
    1. 流程总结如图


      流程总结
    • 插件原理简介

    image.png

    相关文章

      网友评论

          本文标题:Mybatis源码分析

          本文链接:https://www.haomeiwen.com/subject/kllbgftx.html