2021-10-12 JDBC-MySQL 驱动 ResultSetImpl

前言

JDBC通过MySQL数据库查询数据会返回一个结果集,将查询到的结果返回给程序,并将结果集封装在com.mysql.jdbcResultSetImpl里
在这里插入图片描述

com.mysql.jdbcResultSetImpl

通过执行后的结果获取结果集,将结果集中的数据封装在Customer的bean对象中(ORM Object Relational Mapping,简称ORM,对象关系映射),获取方式可指定类型getString,也可使用公共的Object(多态)
在这里插入图片描述
通过指定的索引获取值
在这里插入图片描述

也可以通过别名(或列名)获取
在这里插入图片描述
在ResultSetImpl有将结果集与索引封装的Map集合,可以通过集合进行快速查询到指定的别名值;
在这里插入图片描述
ResultSetImpl封装了四个map集合,通过集合的名字可以大致推断出每个集合的大致存储类型
在这里插入图片描述
通过buildIndexMapping中使用fields对集合new TreeMap并进行装填数据,以及initializeWithMetadata方法对columnToIndexCache new一个HashMap,buildIndexMapping在第一次查询是进行映射,并将hasBuiltIndexMapping设为true
在这里插入图片描述

在这里插入图片描述

ResultSetImpl ---- columnToIndexCache

在这个查询中发现查询过程中会先在代表缓冲的HashMap集合中查询,若不在会去其它map中查询,而又会在将查询到的数据放在columnToIndexCache的代表缓冲的map集中,以达到缓冲的效果
在这里插入图片描述

总结

  • ResultSet 的实体类 ResultSetImpl 维护了数据库返回的结果集
  • JDBC 处理结果集的数据查询时,会先看是否构建映射关系,没有就创建 columnLabelToIndex、columnNameToIndex、fullColumnNameToIndex(new TreeMap(String.CASE_INSENSITIVE_ORDER))
  • columnToIndexCache 缓冲集合在创建ResultSetImpl时创建(HashMap)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值