mybatis底层 -> 简易源码分析
自己制作一个简易mybatis所需技术(个人观点):
1、xml解析
2、连接池
3、动态代理
4、数据库元数据
5、反射
第一步:
// 读取mybatis-config配置文件
InputStream in = new FileInputStream(new File("src/main/resources/mybatis-config.xml"));
1.0、xml解析mybatis-config.xml配置文件获取dataSource和mappers标签相关配置信息,实体接收
1.1、根据解析完成的mappers标签的resources路径继续解析相关xxxMapper.xml的mapper文件,获取namespace、id、resultType、parameterType、sql语句,实体接收)
RuanSqlSessionFactory factory = new RuanSqlSessionFactoryBuilder().build(in);
1.2、获取封装好的配置信息以及Executor线程池信息
RuanSqlSession session = factory.openSession();
1.3、通过动态代理实现invoke获取方法相关参数信息
// 动态代理
public T getMapper(Class clz) {
MaperProxy proxy = new MaperProxy(this);
return (T) Proxy.newProxyInstance(clz.getClassLoader(),
new Class<?>[]{clz},
proxy);
}
1.3.1、通过namespace+id形成的key,获取解析到的xml标签块所有信息
1.3.2、jdbc连接后rs = ps.executeQuery();
然后// 处理查询出来的结果集,映射字段
// 把数据库查询出来的结果集字段的数据要设置到entity对象中去
// 结果集设置到bean对象(// 属性值设置到bean中)反射+数据库元数据技术
AgentMapper agentMapper = session.getMapper(AgentMapper.class);
1.4
然后一个简单的mybatis搭建完成,查询成功
List<Agent> lst = agentMapper.lst();
了解mybatis底层,提升自我价值,面试不慌,编写代码不虚
另外spring,springmvc,springboot,springcloud底层代码搭建可以了解一下
这篇博客也是自己做个记录,方便想起