1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package examples.mysql;
17
18 import java.util.Objects;
19
20 import org.mybatis.dynamic.sql.BasicColumn;
21 import org.mybatis.dynamic.sql.BindableColumn;
22 import org.mybatis.dynamic.sql.render.RenderingContext;
23 import org.mybatis.dynamic.sql.select.function.AbstractTypeConvertingFunction;
24 import org.mybatis.dynamic.sql.util.FragmentAndParameters;
25
26 public class MemberOfFunction<T> extends AbstractTypeConvertingFunction<T, Long, MemberOfFunction<T>> {
27
28 private final String jsonArray;
29
30 protected MemberOfFunction(BasicColumn column, String jsonArray) {
31 super(column);
32 this.jsonArray = Objects.requireNonNull(jsonArray);
33 }
34
35 @Override
36 protected MemberOfFunction<T> copy() {
37 return new MemberOfFunction<>(column, jsonArray);
38 }
39
40 @Override
41 public FragmentAndParameters render(RenderingContext renderingContext) {
42 return column.render(renderingContext)
43 .mapFragment(f -> f + " member of(" + jsonArray + ")");
44 }
45
46 public static <T> MemberOfFunction<T> memberOf(BindableColumn<T> column, String jsonArray) {
47 return new MemberOfFunction<>(column, jsonArray);
48 }
49 }