Mybatis架构设计及源码解析系统-Mybatis初始化过程

Mybatis作为一个ORM框架目前在企业级开发中使用之非常多,说到ORM框架Mybatis其实并不算一个完整的ORM框架这个在Mybatis文档中也有说明,确实Mybtais只是实现了访问数据库的过程我们还是需要自己去写sql语句,当然正是这种妙处使得Mybatis的灵活性非常大。接下来我们通过一个简单的例子来看看Mybatis是如何初始化并执行一条Sql语句。

        String resource = "mybatis.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        SqlSession sqlSession = sqlSessionFactory.openSession();
        try {
            ProductMapper productMapper = sqlSession.getMapper(ProductMapper.class);
            List<Product> productList = productMapper.selectProductList();
            for (Product product : productList) {
                System.out.printf(product.toString());
            }
        } finally {
            sqlSession.close();
        }

上面这个例子大家都很熟悉,这个就是“编程式”使用Mybatis的基本方法。下面对这段代码的信息进行追条分析:

InputStream inputStream = Resources.getResourceAsStream(resource);这句代码很显然是用来加载资源文件,对应到Mybatis中就是加载mybatis.xml文件,这跟Java读取普通文件没啥区别就是获取到文件的输入流。重点在下面这句代码:

SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);这句代码通过解析Mybatis配置文件得到SqlSessionFactory,何为SqlSessionFactory?“Creates an {@link SqlSession} out of a connection or a DataSource” 创建一个sql回话为一外部链接或者数据源,这个是SqlSessionFactory类中的说明。我们知道执行一条sql一会都会与数据库进行一次回话,SqlSessionFactory就是创建这种回话的工厂类。

解析XML文件主要目的就是为了构建Configuration这个类,Configuration是Mybatis的核心配置类,包含了所有与Mybatis的配置信息包括解析的sql语句映射信息。

未完待续

猜你喜欢

转载自my.oschina.net/wenbo123/blog/1817807