第一篇博文中提到的分片-JDBC分库分表思想中涉及到分片规则配置,SQL解析,SQL改写,SQL路由,SQL执行以及结果归并等模块。本文将从分片-JDBC如何进行SQL解析来进行源码解读。
一,创建SQL解析器
简单说SQL路由即就是将SQL语句根据分库规则发送到对应的库上执行。如何做到且看源码
io.shardingjdbc.core.jdbc.core.statement.ShardingStatement.generateExecutor(SQL)
private StatementExecutor generateExecutor(final String sql) throws SQLException {
clearPrevious();
routeResult = new StatementRoutingEngine(connection.getShardingContext()).route(sql);
Collection<StatementUnit> statementUnits = new LinkedList<>();