@@ -39,7 +39,7 @@ public class XMLScriptBuilder extends BaseBuilder {
39
39
private boolean isDynamic ;
40
40
private final Class <?> parameterType ;
41
41
private final Map <String , NodeHandler > nodeHandlerMap = new HashMap <>();
42
- private final static Map <String , StaticTextSqlNode > EMPTY_TEXT_NODE = new ConcurrentHashMap <>();
42
+ private static final Map <String , SqlNode > emptyNodeCache = new ConcurrentHashMap <>();
43
43
44
44
public XMLScriptBuilder (Configuration configuration , XNode context ) {
45
45
this (configuration , context , null );
@@ -83,8 +83,7 @@ protected MixedSqlNode parseDynamicTags(XNode node) {
83
83
if (child .getNode ().getNodeType () == Node .CDATA_SECTION_NODE || child .getNode ().getNodeType () == Node .TEXT_NODE ) {
84
84
String data = child .getStringBody ("" );
85
85
if (data .trim ().isEmpty ()) {
86
- StaticTextSqlNode staticTextSqlNode = EMPTY_TEXT_NODE .computeIfAbsent (data , StaticTextSqlNode ::new );
87
- contents .add (staticTextSqlNode );
86
+ contents .add (emptyNodeCache .computeIfAbsent (data , EmptySqlNode ::new ));
88
87
continue ;
89
88
}
90
89
TextSqlNode textSqlNode = new TextSqlNode (data );
@@ -255,4 +254,18 @@ private SqlNode getDefaultSqlNode(List<SqlNode> defaultSqlNodes) {
255
254
}
256
255
}
257
256
257
+ private static class EmptySqlNode implements SqlNode {
258
+ private final String whitespaces ;
259
+
260
+ public EmptySqlNode (String whitespaces ) {
261
+ super ();
262
+ this .whitespaces = whitespaces ;
263
+ }
264
+
265
+ @ Override
266
+ public boolean apply (DynamicContext context ) {
267
+ context .appendSql (whitespaces );
268
+ return true ;
269
+ }
270
+ }
258
271
}
0 commit comments