代码拉取完成,页面将自动刷新
声明:本人这里为简单说明,如果需要更进一步的验证的话,可以运行程序时dump对应Mapper接口的代理实现类,直接查看代码实现类里面的代码逻辑
源码位置:org.apache.ibatis.executor.SimpleExecutor#doQuery
@Override
public <E> List<E> doQuery(MappedStatement ms, Object parameter, RowBounds rowBounds, ResultHandler resultHandler, BoundSql boundSql) throws SQLException {
Statement stmt = null;
try {
Configuration configuration = ms.getConfiguration();
StatementHandler handler = configuration.newStatementHandler(wrapper, ms, parameter, rowBounds, resultHandler, boundSql);
stmt = prepareStatement(handler, ms.getStatementLog()); // 将prepare语句发给数据库. 此代码执行完毕后,还未实际查询数据库表数据
return handler.query(stmt, resultHandler); // 将prepare语句的参数发送给数据库,执行并返回结果。此代码执行完毕后,已完成实际查询数据库表数据
} finally {
closeStatement(stmt);
}
}
结论:
数据库这里以mysql为例
第一步:应用获取mysql连接
第二步:prepareStatement(handler, ms.getStatementLog())
,应用打印prepare语句并发送prepare语句到mysql
第三步:handler.query(stmt, resultHandler)
注:这里的小步骤的顺序,是本人通过查询一个500w条数据表观察出来的
2023-05-29 12:22:19.584 DEBUG 21764 [main] com.demo.idea.mapper.TmpMapper.selectCount:137 ==> Preparing: SELECT COUNT(*) FROM `tmp_t` 2023-05-29 12:22:19.619 DEBUG 21764 [main] com.demo.idea.mapper.TmpMapper.selectCount:137 ==> Parameters: 2023-05-29 12:24:35.580 DEBUG 21764 [main] com.demo.idea.mapper.TmpMapper.selectCount:137 <== Total: 1
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。