为了便于源码分析,还是先来一个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,就要分析分析这段很长的封装代码;
这个源码该怎么开始才能让人觉得水到渠成,顺其自然呢?
算了,还是硬着头皮一步一步来吧;