Mybatis核心原理,动态代理讲解

本文深入探讨Mybatis的核心原理,解释动态代理在生成Mapper代理对象中的作用。通过手动模拟Mybatis的动态代理过程,阐述类加载器、接口列表和InvocationHandler在生成代理对象中的角色,以及如何实现对Mapper方法的增强,从而理解Mybatis如何简化数据库操作。
摘要由CSDN通过智能技术生成

Mybatis相信大家都用的很溜了,今天我鸭血粉丝来整点别的,给大家讲解一下Mybatis最核心的原理:动态生成Mapper代理对象,我会手动对整个过程进行模拟

1.平常我们是如何使用Mapper的

先写一个简单的UserMapper,它包含一个全表查询的方法,代码如下

public interface UserMapper {

    @Select("select * from user")
    public List<User> queryAll();
}

然后大家思考一个问题,我们平时是怎么使用这个UserMapper的?

很多时候我们会把Mybatis和Spring整合起来一起使用,于是会有类似下面的代码:

@Service
public class UserServiceImpl {

    @Autowired
    private UserMapper userMapper;

    public List<User> queryAll(){
        return this.userMapper.queryAll();
    }
}

看到这段熟得不能再熟的代码不知道大家会不会有一丝疑惑:UserMapper明明是一个接口,为什么可以直接调用他的queryAll方法呢?

这个问题其实也不难解,我们不能直接调用一个接口的方法,这背后肯定是有一个对象的,至于这个对象是怎么来的,这里直接告诉大家是通过动态代理生成的。只要弄懂了这个动态代理对象是怎么生成的,整个Mybatis框架原理就就说清楚了。在模拟之前我们先验证一下是不是使用JDK的动态代理。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值