mybatis源码解读二-调用过程全解析

mybatis源码解读二-调用过程全解析,第1张

mybatis源码解读二-调用过程全解析

官方文档

根据前期准备jdbc阶段进行解读

  1. 配置
  2. 拼接sql语句
  3. 加载数据源,获取Connection
  4. 获取Statement
  5. 执行获取结果
  6. 结果转换
  7. 关闭
  8. 异常处理
示例1:com.dzq.MybatisSessionTest

最基本的功能,根据此示例读源码

public static void main(String[] args) throws IOException {
    // 配置文件
    String resource = "mybatis-config.xml";
    // 解析配置文件
    InputStream inputStream = Resources.getResourceAsStream(resource);
    SqlSessionFactory sqlSessionFactory =
            new SqlSessionFactoryBuilder().build(inputStream);
    // 获取session
    SqlSession sqlSession = sqlSessionFactory.openSession();
    // 根据state找到sql语句并传入参数执行
    String flowKey = sqlSession.selectOne("com.dzq.mapper.TransactionMapper.getFlowKey", 10);
    System.out.println(flowKey);
}
示例 2: com.dzq.MybatisMapperTest

如何生成动态代理Mapper,动态代理都做了什么:如何根据动态代理找到对应的sql

public static void main(String[] args) throws IOException {
    // 配置文件
    String resource = "mybatis-config.xml";
    // 解析配置文件
    InputStream inputStream = Resources.getResourceAsStream(resource);
    SqlSessionFactory sqlSessionFactory =
            new SqlSessionFactoryBuilder().build(inputStream);
    // 获取session
    SqlSession sqlSession = sqlSessionFactory.openSession();
    // 得到mapper代理
    TransactionMapper transactionMapper = sqlSession.getMapper(TransactionMapper.class);
    // 执行代理方法,并转换结果
    String flowKey = transactionMapper.getFlowKey(10);
    System.out.println(flowKey);
}

配置文件mybatis-config.xml和对应的TransactionMapper.xml