Java学习:MyBatis执行流程

public static void main(String[] args) {
		//读取全局配置文件
		InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
		//解析配置文件,返回SqlSessionFactory对象
		SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
		SqlSession sqlSession = factory.openSession();
		//获得了接口对象,调用接口中的方法。
		UserMapper mapper = sqlSession.getMapper(UserMapper.class);
		List<User> list = mapper.getUserByName("tom");
}

详细流程

1.使用Resource中的getResourceAsStream(“mybatis-config.xml”) 方法读取mybatis-config.xml。(当ssm整合后,环境配置与mapper映射文件的注册会转移到spring配置文件中)

2.创建SqlSessionFactoryBuilder对象,调用build(inputstream)方法读取并解析配置文件,返回SqlSessionFactory对象。

  • build()方法中创建了一个XMLConfigBuilder对象来解析mybatis-config.xml。(初始化配置文件信息的本质就是创建Configuration对象,将解析的xml数据封装到Configuration内部的属性中)(下文中使用到Configuration对象的mappedStatements属性,就是将配置文件中的增删改查标签分别封装成MappedStatement然后存放到mappedStatements属性中,存放方式键值对:存储时key
    = 全限定类名 + 方法名,value = 对应的MappedStatement对象)
  • 创建后的的XMlConfigurationBuilder对象调用parse方法来进行解析,其中parse调用了parseConfiguration方法来将各个标签中的内容封装到Configuration对象的属性当中,并在parse方法中返回。
  • 返回之后使用build(XMLConfigBuilder.parse());返回一个DefaultSqlSessionFactory的一个会话工厂实例

3.使用会话工厂实例创建一个sqlSession ,再调用getMapper方法,传入对应Mapper的字节码对象来获取对应的接口对象,然后使用其中的方法。(MyBatis初始化时对接口的处理:MapperRegistry是Configuration中的一个属性,它内部维护一个HashMap用于存放mapper接口的工厂类,每个接口对应一个工厂类。mappers中可以配置接口的包路径,或者某个具体的接口类)

  • getMapper()方法中通过从MapperRegistry中的HashMap中拿到mapperProxyFactory,然后通过newInstance(sqlSession)来创建一个实例,并使用其中的方法 (在动态代理返回了示例后,我们就可以直接调用mapper类中的方法了,说明在MapperProxy中的invoke方法中已经为我们实现了方法)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值