Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
apache
Shardingsphere
提交
156a0248
Shardingsphere
项目概览
apache
/
Shardingsphere
通知
56
Star
3
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Shardingsphere
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
156a0248
编写于
5月 09, 2017
作者:
T
terrymanu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add generateId to parameter: parser => router
上级
78aaf333
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
17 addition
and
10 deletion
+17
-10
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/jdbc/ShardingStatement.java
...dangdang/ddframe/rdb/sharding/jdbc/ShardingStatement.java
+1
-3
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parsing/parser/context/GeneratedKeyContext.java
.../sharding/parsing/parser/context/GeneratedKeyContext.java
+1
-1
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parsing/parser/statement/insert/AbstractInsertParser.java
...parsing/parser/statement/insert/AbstractInsertParser.java
+8
-6
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/router/PreparedSQLRouter.java
...ngdang/ddframe/rdb/sharding/router/PreparedSQLRouter.java
+7
-0
未找到文件。
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/jdbc/ShardingStatement.java
浏览文件 @
156a0248
...
...
@@ -226,9 +226,7 @@ public class ShardingStatement extends AbstractStatementAdapter {
return
generatedKeyResultSet
=
routedStatements
.
iterator
().
next
().
getGeneratedKeys
();
}
}
if
(
Statement
.
RETURN_GENERATED_KEYS
!=
generatedKeyContext
.
getAutoGeneratedKeys
()
&&
null
==
generatedKeyContext
.
getColumnIndexes
()
&&
null
==
generatedKeyContext
.
getColumnNames
())
{
if
(
Statement
.
RETURN_GENERATED_KEYS
!=
generatedKeyContext
.
getAutoGeneratedKeys
()
&&
null
==
generatedKeyContext
.
getColumnIndexes
()
&&
null
==
generatedKeyContext
.
getColumnNames
())
{
return
generatedKeyResultSet
=
new
GeneratedKeysResultSet
();
}
return
generatedKeyResultSet
=
new
GeneratedKeysResultSet
(
generateAutoIncrementTable
(),
generatedKeyContext
.
getColumnNameToIndexMap
(),
this
);
...
...
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parsing/parser/context/GeneratedKeyContext.java
浏览文件 @
156a0248
...
...
@@ -67,7 +67,7 @@ public class GeneratedKeyContext {
* @param columnName 列名称
* @param value 键值
*/
public
void
putValue
(
final
String
columnName
,
final
Object
value
)
{
public
void
putValue
(
final
String
columnName
,
final
Number
value
)
{
valueTable
.
put
(
rowIndex
,
columnIndex
,
value
);
columnNameToIndexMap
.
put
(
columnName
,
columnIndex
);
columnIndex
++;
...
...
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parsing/parser/statement/insert/AbstractInsertParser.java
浏览文件 @
156a0248
...
...
@@ -159,19 +159,21 @@ public abstract class AbstractInsertParser implements SQLStatementParser {
}
while
(
sqlParser
.
skipIfEqual
(
Symbol
.
COMMA
));
ItemsToken
itemsToken
=
new
ItemsToken
(
sqlParser
.
getLexer
().
getCurrentToken
().
getEndPosition
()
-
sqlParser
.
getLexer
().
getCurrentToken
().
getLiterals
().
length
());
int
count
=
0
;
int
offset
=
0
;
int
parametersSize
=
parameters
.
size
();
for
(
ShardingColumnContext
each
:
shardingColumnContexts
)
{
if
(
each
.
isAutoIncrement
())
{
Number
autoIncrementedValue
=
getShardingRule
().
findTableRule
(
sqlContext
.
getTables
().
get
(
0
).
getName
()).
generateId
(
each
.
getColumnName
());
Number
generatedId
=
getShardingRule
().
findTableRule
(
sqlContext
.
getTables
().
get
(
0
).
getName
()).
generateId
(
each
.
getColumnName
());
if
(
parameters
.
isEmpty
())
{
itemsToken
.
getItems
().
add
(
autoIncrementedValue
.
toString
());
sqlExprs
.
add
(
new
SQLNumberExpr
(
autoIncrementedValue
));
itemsToken
.
getItems
().
add
(
generatedId
.
toString
());
sqlExprs
.
add
(
new
SQLNumberExpr
(
generatedId
));
}
else
{
itemsToken
.
getItems
().
add
(
"?"
);
parameters
.
add
(
autoIncrementedValue
)
;
sqlExprs
.
add
(
new
SQLPlaceholderExpr
(
parameters
.
size
()
-
1
));
offset
++
;
sqlExprs
.
add
(
new
SQLPlaceholderExpr
(
parameters
Size
+
offset
-
1
));
}
sqlContext
.
getGeneratedKeyContext
().
getColumns
().
add
(
each
.
getColumnName
());
sqlContext
.
getGeneratedKeyContext
().
putValue
(
each
.
getColumnName
(),
autoIncrementedValue
);
sqlContext
.
getGeneratedKeyContext
().
putValue
(
each
.
getColumnName
(),
generatedId
);
}
if
(
getShardingRule
().
isShardingColumn
(
each
))
{
conditionContext
.
add
(
new
ConditionContext
.
Condition
(
each
,
sqlExprs
.
get
(
count
)));
...
...
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/router/PreparedSQLRouter.java
浏览文件 @
156a0248
...
...
@@ -28,6 +28,7 @@ import lombok.RequiredArgsConstructor;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.TreeSet
;
/**
* 预解析功能的SQL路由器.
...
...
@@ -55,6 +56,12 @@ public class PreparedSQLRouter {
public
SQLRouteResult
route
(
final
List
<
Object
>
parameters
)
{
if
(
null
==
sqlContext
)
{
sqlContext
=
engine
.
parseSQL
(
logicSql
,
parameters
);
if
(
sqlContext
instanceof
InsertSQLContext
)
{
InsertSQLContext
insertSQLContext
=
(
InsertSQLContext
)
sqlContext
;
for
(
Integer
each
:
new
TreeSet
<>(
insertSQLContext
.
getGeneratedKeyContext
().
getColumnNameToIndexMap
().
values
()))
{
parameters
.
add
(
insertSQLContext
.
getGeneratedKeyContext
().
getValueTable
().
get
(
0
,
each
));
}
}
}
else
{
List
<
Number
>
generatedIds
=
generateId
();
parameters
.
addAll
(
generatedIds
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录