Skip to content

Commit 2433820

Browse files
committed
Share blank nodes
1 parent a204ffa commit 2433820

File tree

1 file changed

+7
-0
lines changed

1 file changed

+7
-0
lines changed

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import java.util.HashMap;
2020
import java.util.List;
2121
import java.util.Map;
22+
import java.util.concurrent.ConcurrentHashMap;
2223

2324
import org.apache.ibatis.builder.BaseBuilder;
2425
import org.apache.ibatis.builder.BuilderException;
@@ -38,6 +39,7 @@ public class XMLScriptBuilder extends BaseBuilder {
3839
private boolean isDynamic;
3940
private final Class<?> parameterType;
4041
private final Map<String, NodeHandler> nodeHandlerMap = new HashMap<>();
42+
private final static Map<String, StaticTextSqlNode> EMPTY_TEXT_NODE = new ConcurrentHashMap<>();
4143

4244
public XMLScriptBuilder(Configuration configuration, XNode context) {
4345
this(configuration, context, null);
@@ -80,6 +82,11 @@ protected MixedSqlNode parseDynamicTags(XNode node) {
8082
XNode child = node.newXNode(children.item(i));
8183
if (child.getNode().getNodeType() == Node.CDATA_SECTION_NODE || child.getNode().getNodeType() == Node.TEXT_NODE) {
8284
String data = child.getStringBody("");
85+
if (data.trim().isEmpty()) {
86+
StaticTextSqlNode staticTextSqlNode = EMPTY_TEXT_NODE.computeIfAbsent(data, StaticTextSqlNode::new);
87+
contents.add(staticTextSqlNode);
88+
continue;
89+
}
8390
TextSqlNode textSqlNode = new TextSqlNode(data);
8491
if (textSqlNode.isDynamic()) {
8592
contents.add(textSqlNode);

0 commit comments

Comments
 (0)