1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.mybatis.dynamic.sql;
17
18 import java.util.Objects;
19 import java.util.Optional;
20
21 import org.jspecify.annotations.Nullable;
22 import org.mybatis.dynamic.sql.render.RenderingContext;
23 import org.mybatis.dynamic.sql.util.FragmentAndParameters;
24 import org.mybatis.dynamic.sql.util.StringUtilities;
25
26 public class StringConstant implements BindableColumn<String> {
27
28 private final @Nullable String alias;
29 private final String value;
30
31 private StringConstant(String value) {
32 this(value, null);
33 }
34
35 private StringConstant(String value, @Nullable String alias) {
36 this.value = Objects.requireNonNull(value);
37 this.alias = alias;
38 }
39
40 @Override
41 public Optional<String> alias() {
42 return Optional.ofNullable(alias);
43 }
44
45 @Override
46 public FragmentAndParameters render(RenderingContext renderingContext) {
47 return FragmentAndParameters.fromFragment(StringUtilities.formatConstantForSQL(value));
48 }
49
50 @Override
51 public StringConstant as(String alias) {
52 return new StringConstant(value, alias);
53 }
54
55 public static StringConstant of(String value) {
56 return new StringConstant(value);
57 }
58 }