最简单的开始:
配置文件加载,与SqlSessionFactory的创建。
private static SqlSessionFactory sqlSessionFactory = null; static { String resource = "org/taobao/study/ibatis/Configuration.xml"; Reader reader = null; try { reader = Resources.getResourceAsReader(resource); } catch (IOException e) { e.printStackTrace(); } sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); }
最简单的调用:
SqlSession session = Util.getSqlSessionFactory().openSession(); User user = null; try{ user = (User)session.selectOne("org.taobao.study.ibatis.UserMapper.selectOne", id); }catch(Exception e){ e.printStackTrace(); }finally{ session.close(); } return user;
开始猜测myBatis3内部代码:
第一步:解析配置文件,以及映射文件。
Resources.getResourceAsReader(resource);
第二步:使用映射逻辑,并实现基本数据调用。
user = (User)session.selectOne("org.taobao.study.ibatis.UserMapper.selectOne", id);
内部应该还有JDBC的封装机制等。
接着跟踪第一部分:
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); // XMLConfigBuilder -> DefaultSqlSessionFactory
这个解析过程先是XMLConfigBuilder,内部用的是SAX,合理。然后给一个DefaultSqlSessionFactory的默认实现。