ShardingJdbc2.X学习总结系列(九):源码解析—SQL执行结果合并

本文详细介绍了ShardingJdbc2.x中SQL执行后的结果合并过程,涉及execute、executeUpdate和executeQuery三种方法的不同处理,重点解析了ShardingResultSet对象的生成,包括MergeEngine的merge方法、ResultSetMerger的实现(如Stream、Memory和Decorator)以及limit关键字的处理。最后,概述了结果集解析和字段值转换的步骤。
摘要由CSDN通过智能技术生成

从前面几篇文章,我们了解了从SQ解析---》SQL路由--》SQL改写--》SQL执行的整体过程。这一篇主要是讲解执行的结果如何变成正规结果相应到调用方的。

这里不同的执行方法处理的方式( execute , executeUpdate , executeQuery )也是不一样的

1.execute 方法返回的是 boolean 类型,处理比较简单

public boolean execute() throws SQLException {
        List<Boolean> result = executorEngine.executePreparedStatement(sqlType, preparedStatementUnits, parameters, new ExecuteCallback<Boolean>() {
            
            @Override
            public Boolean execute(final BaseStatementUnit baseStatementUnit) throws Exception {
                return ((PreparedStatement) baseStatementUnit.getStatement()).execute();
            }
        });
        if (null == result || result.isEmpty() || null == result.get(0)) {
            return false;
        }
        return result.get(0);
    }

2.executeUpdate 方法,返回的是int类型,执行成功的条数,这里计算也是比较简单的

public int executeUpdate() throws SQLException {
        List<Integer> results = executorEngine.executePreparedStatement(sqlType, preparedStatementUnits, parameters, new ExecuteCallback<Integer>() {
            
            @Override
            public Integer execu
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值