Mybatis深入源码分析之MapperProxy

本文深入探讨Mybatis的MapperProxy,分析其在SqlSessionFactoryBuilder之后的角色,揭示MapperProxy如何生成代理实现类,以及在执行dao方法时动态代理的过程。通过源码解析getMapper方法和MapperProxy.invoke方法,阐述MapperProxy如何实现接口方法与SQL配置的关联。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        通过Mybatis深入源码分析之SqlSessionFactoryBuilder分析我们了解了SqlSessionFactoryBuilder内部源码实现以及每个类的作用,此博客将会对MapperProxy源码揭秘。

  try {
            // 1.mybatis配置文件
            String resources = "mybatis.xml";
            // 2.获取Reader对象
            Reader resourceAsReader = Resources.getResourceAsReader(resources);
            // 3.获取SqlSessionFactoryBuilder
            SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resourceAsReader);
            // 4.创建对应的session
            SqlSession sqlSession = build.openSession();
            // 5.获取对应的mapper
            UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
            // 6.执行方法
            UserEntity user = userMapper.getUser(1);
            System.out.println("name:" + user.getName());
        } catch (Exception e) {
            e.printStackTrace();
        }

类图分析:

通过sqlSession.getMapper(UserMapper.class)源码:

  public <T> T getMapper(Class<T> type, SqlSession sqlSession) {
    return mapperRegistry.getMapper(type, sqlSession);
  }

在上述代码中我们知道我们的所有mapper文件都注册到MapperRegistry中,接下来分析MapperRegistry中代码:

  public <T> T getMapper(Class<T> type, SqlSession sqlSession) {
    //所有的map
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值