Mybatis源码阅读:SqlSession产生的过程

工作之余,偶尔用用mybatis,今天突然想看看mybatis关于sqlSession产生的过程,这点源码应该也是mybatis最最简单的部分了吧。

想深入研究源码,总要有个入手点,我感觉可以从这开始呢。

在使用mybatis时,首先配置的是configuration.xml,之后我们会在测试代码中创建如下代码来产生sessionFactory。

SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader("configuration.xml"));

SqlSession sqlSession = sessionFactory.openSession();

接下来就是本文的重点了,mybatis都做了哪些工作呢?

首先先看一下几个重要的类图Mybatis源码阅读:SqlSession产生的过程_第1张图片

类图中有两个重要的接口,SqlSessionFactory和SqlSession。SqlSessionFactory中有openSession()和getConfiguration(),而且SqlSession里面就是关于数据库处理的各种方法了。

下图是我简单整理的产生SqlSession的时序图,比较简单。大家相互交流学习。

Mybatis源码阅读:SqlSession产生的过程_第2张图片

在得到session之后,就可以做些针对pojo的动作了。例如:

        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        User user = userMapper.findByName("a");
        System.out.println(user.getAge());
        
        User user1 = new User();
        user.setAge(10);
        user.setName("abc");
        userMapper.insert(user);
        
        System.out.println("count is :"+userMapper.countAll());
        
        List<User> users = userMapper.selectAll();
        Iterator<User> iter = users.iterator();
        while(iter.hasNext())
        {
            User u = iter.next();
            System.out.println("name is:"+u.getName()+" and the age is:"+u.getAge());
        }

        sqlSession.commit();
        sqlSession.close();


这只是一个简单的小例子,大家可以相互交流。这个暂时没有写transaction相关的,慢慢补上。


你可能感兴趣的:(Mybatis源码阅读:SqlSession产生的过程)