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的核心原理,解释动态代理在生成Mapper代理对象中的作用。通过手动模拟Mybatis的动态代理过程,阐述类加载器、接口列表和InvocationHandler在生成代理对象中的角色,以及如何实现对Mapper方法的增强,从而理解Mybatis如何简化数据库操作。
最低0.47元/天 解锁文章
1380





