MyBatis中Executor源码解析之BatchExecutor搞不懂

为了便于源码分析,还是先来一个MyBatis的demo吧

mybatis-mysql-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>
    <properties>
        <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://127.0.0.1:3306/gys?serverTimezone=UTC"/>
    </properties>
    <settings>
        <setting name="defaultExecutorType" value="SIMPLE"/>
    </settings>
    <!--环境配置,连接的数据库,这里使用的是MySQL-->
    <environments default="dev">
        <environment id="dev">
            <!--指定事务管理的类型,这里简单使用Java的JDBC的提交和回滚设置-->
            <transactionManager type="JDBC" />
            <!--dataSource 指连接源配置,POOLED是JDBC连接对象的数据源连接池的实现-->
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"></property>
                <property name="url" value="${url}"></property>
                <property name="username" value="root"></property>
                <property name="password" value="gys"></property>
            </dataSource>
        </environment>       
    </environments>
    <mappers>   
        <mapper resource="mapper/user.xml"></mapper>
    </mappers>
</configuration>

mapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="dao.IUserMapper">  

    <insert id="insertUser" parameterType="model.User">
        insert into user
        (name,age)
        values
        (#{name},#{age})
    </insert>

</mapper>

入口方法main:

 1     public static void main(String[] args) throws Exception {
 2         SqlSessionFactory sqlSessionFactory1=new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-mysql-config.xml"),"dev");
 3         SqlSession sqlSession1= sqlSessionFactory1.openSession(true);
 4         IUserMapper userMapper=sqlSession1.getMapper(IUserMapper.class);
 5         User user=new User();
 6         user.setAge(28);
 7         user.setName("a");
 8         int i=userMapper.insertUser(user);
 9         System.out.println("受影响的行数"+i);
10         sqlSession1.close();
11     }

这个Executor的代码离上面Demo执行代码还有一段很长封装,如果分析Executor,就要分析分析这段很长的封装代码;

这个源码该怎么开始才能让人觉得水到渠成,顺其自然呢?

算了,还是硬着头皮一步一步来吧;

猜你喜欢

转载自www.cnblogs.com/guoyansi19900907/p/12689233.html