Skip to content

Commit 5a4a653

Browse files
author
wei.zw
committed
misc:enhance nodeHandlerMap ,using a global Map instead of local variables
1 parent dd7e1fc commit 5a4a653

File tree

1 file changed

+15
-11
lines changed

1 file changed

+15
-11
lines changed

src/main/java/org/apache/ibatis/scripting/xmltags/XMLScriptBuilder.java

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ public class XMLScriptBuilder extends BaseBuilder {
3737
private final XNode context;
3838
private boolean isDynamic;
3939
private final Class<?> parameterType;
40+
private final Map<String, NodeHandler> nodeHandlerMap = new HashMap<String, NodeHandler>();
4041

4142
public XMLScriptBuilder(Configuration configuration, XNode context) {
4243
this(configuration, context, null);
@@ -48,6 +49,19 @@ public XMLScriptBuilder(Configuration configuration, XNode context, Class<?> par
4849
this.parameterType = parameterType;
4950
}
5051

52+
53+
private void initNodeHandlerMap(){
54+
nodeHandlerMap.put("trim", new TrimHandler());
55+
nodeHandlerMap.put("where", new WhereHandler());
56+
nodeHandlerMap.put("set", new SetHandler());
57+
nodeHandlerMap.put("foreach", new ForEachHandler());
58+
nodeHandlerMap.put("if", new IfHandler());
59+
nodeHandlerMap.put("choose", new ChooseHandler());
60+
nodeHandlerMap.put("when", new IfHandler());
61+
nodeHandlerMap.put("otherwise", new OtherwiseHandler());
62+
nodeHandlerMap.put("bind", new BindHandler());
63+
}
64+
5165
public SqlSource parseScriptNode() {
5266
List<SqlNode> contents = parseDynamicTags(context);
5367
MixedSqlNode rootSqlNode = new MixedSqlNode(contents);
@@ -88,17 +102,7 @@ List<SqlNode> parseDynamicTags(XNode node) {
88102
}
89103

90104
NodeHandler nodeHandlers(String nodeName) {
91-
Map<String, NodeHandler> map = new HashMap<String, NodeHandler>();
92-
map.put("trim", new TrimHandler());
93-
map.put("where", new WhereHandler());
94-
map.put("set", new SetHandler());
95-
map.put("foreach", new ForEachHandler());
96-
map.put("if", new IfHandler());
97-
map.put("choose", new ChooseHandler());
98-
map.put("when", new IfHandler());
99-
map.put("otherwise", new OtherwiseHandler());
100-
map.put("bind", new BindHandler());
101-
return map.get(nodeName);
105+
return nodeHandlerMap.get(nodeName);
102106
}
103107

104108
private interface NodeHandler {

0 commit comments

Comments
 (0)