1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.mybatis.dynamic.sql.util;
17
18 import java.util.Objects;
19 import java.util.function.Supplier;
20
21 import org.jspecify.annotations.Nullable;
22 import org.mybatis.dynamic.sql.SqlColumn;
23
24 public class ValueMapping<T> extends AbstractColumnMapping {
25
26 private final Supplier<T> valueSupplier;
27
28 private final SqlColumn<T> localColumn;
29
30 private ValueMapping(SqlColumn<T> column, Supplier<T> valueSupplier) {
31 super(column);
32 this.valueSupplier = Objects.requireNonNull(valueSupplier);
33 localColumn = Objects.requireNonNull(column);
34 }
35
36 public @Nullable Object value() {
37 return localColumn.convertParameterType(valueSupplier.get());
38 }
39
40 @Override
41 public <R> R accept(ColumnMappingVisitor<R> visitor) {
42 return visitor.visit(this);
43 }
44
45 public static <T> ValueMapping<T> of(SqlColumn<T> column, Supplier<T> valueSupplier) {
46 return new ValueMapping<>(column, valueSupplier);
47 }
48 }