美文网首页
sharding-jdbc执行sql源码分析

sharding-jdbc执行sql源码分析

作者: Britney_z | 来源:发表于2021-11-08 21:47 被阅读0次

    我现在插入一条数据,我们看看ShardingPreparedStatement的execute方法

    清理缓存的数据

    下一步就是sql路由了,PreparedStatementRoutingEngine要完成路由功能,包含了分库分表的策略

    ParsingSQLRouter还是ShardingMasterSlaveRouter的选择

    ParsingSQLRouter真正实现的类是SQLParsingEngine

    我们看看SQLParsingEngine的parse方法,如果存在缓存,则直接返回,否则我们进行解析

    我们找到具体的SQLParser,根据tokenType判断是AbstractInsertParser、 AbstractUpdateParser 、  AbstractDeleteParser?

    根据dbType选择具体的InsertParser  例如我们是mysql,选择的是MySQLInsertParser

    下一步就是ParsingSQLRouter的route方法

    首先看看getGenerateKey方法,找到表策略、自增字段,生成id

    我们看看返回的ShardingConditions结果

    我们看看RoutingEngineFactory的newInstance方法,找到具体的StandardRoutingEngine

    我们看下StandardRoutingEngine的routeDataSources方法

    例如userId为2,我们可以得到ds_0和表t_order_2

    我们看看SQLRewriteEngine的对于sql的生成方法

    下面我们看看PreparedStatementExecutor的execute方法

    实际上我们要关注的几个点

    SQLParsingEngine  执行 parse  返回SQLStatement

    RoutingEngine (StandardRoutingEngine)执行  route 返回RoutingResult

    SQLRewriteEngine执行 rewrite  返回 SQLBuilder

    ShardingExecuteEngine执行groupExecute 返回执行结果

    相关文章

      网友评论

          本文标题:sharding-jdbc执行sql源码分析

          本文链接:https://www.haomeiwen.com/subject/lhtrzltx.html