16
16
package org .mybatis .dynamic .sql .where .render ;
17
17
18
18
import java .util .Map ;
19
+ import java .util .Optional ;
19
20
import java .util .concurrent .atomic .AtomicInteger ;
20
21
21
22
import org .mybatis .dynamic .sql .SqlCriterion ;
26
27
27
28
public class WhereRenderer {
28
29
private WhereModel model ;
29
- private AtomicInteger sequence = new AtomicInteger ( 1 ) ;
30
+ private AtomicInteger sequence ;
30
31
private RenderingStrategy renderingStrategy ;
31
32
private Map <SqlTable , String > tableAliases ;
32
33
33
- private WhereRenderer (WhereModel model , RenderingStrategy renderingStrategy , Map <SqlTable , String > tableAliases ) {
34
- this .model = model ;
35
- this .renderingStrategy = renderingStrategy ;
36
- this .tableAliases = tableAliases ;
34
+ private WhereRenderer (Builder builder ) {
35
+ model = builder .model ;
36
+ renderingStrategy = builder .renderingStrategy ;
37
+ tableAliases = builder .tableAliases ;
38
+ sequence = builder .sequence ().orElse (new AtomicInteger (1 ));
37
39
}
38
40
39
41
public WhereSupport render () {
@@ -47,8 +49,30 @@ private FragmentAndParameters render(SqlCriterion<?> criterion) {
47
49
.render (criterion );
48
50
}
49
51
50
- public static WhereRenderer of (WhereModel model , RenderingStrategy renderingStrategy ,
51
- Map <SqlTable , String > tableAliases ) {
52
- return new WhereRenderer (model , renderingStrategy , tableAliases );
52
+ public static class Builder {
53
+ private WhereModel model ;
54
+ private RenderingStrategy renderingStrategy ;
55
+ private Map <SqlTable , String > tableAliases ;
56
+ private AtomicInteger sequence ;
57
+
58
+ public Builder (WhereModel model , RenderingStrategy renderingStrategy ,
59
+ Map <SqlTable , String > tableAliases ) {
60
+ this .model = model ;
61
+ this .renderingStrategy = renderingStrategy ;
62
+ this .tableAliases = tableAliases ;
63
+ }
64
+
65
+ public Builder withSequence (AtomicInteger sequence ) {
66
+ this .sequence = sequence ;
67
+ return this ;
68
+ }
69
+
70
+ private Optional <AtomicInteger > sequence () {
71
+ return Optional .ofNullable (sequence );
72
+ }
73
+
74
+ public WhereRenderer build () {
75
+ return new WhereRenderer (this );
76
+ }
53
77
}
54
78
}
0 commit comments