1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package examples.animal.data;
17
18 import java.sql.JDBCType;
19 import java.util.Optional;
20
21 import org.mybatis.dynamic.sql.BasicColumn;
22 import org.mybatis.dynamic.sql.BindableColumn;
23 import org.mybatis.dynamic.sql.render.RenderingContext;
24 import org.mybatis.dynamic.sql.select.function.AbstractTypeConvertingFunction;
25 import org.mybatis.dynamic.sql.util.FragmentAndParameters;
26
27 public class Length extends AbstractTypeConvertingFunction<Object, Integer, Length> {
28 private Length(BasicColumn column) {
29 super(column);
30 }
31
32 @Override
33 public Optional<JDBCType> jdbcType() {
34 return Optional.of(JDBCType.INTEGER);
35 }
36
37 @Override
38 public FragmentAndParameters render(RenderingContext renderingContext) {
39 return column.render(renderingContext)
40 .mapFragment(f -> "length(" + f + ")");
41 }
42
43 @Override
44 protected Length copy() {
45 return new Length(column);
46 }
47
48 public static Length length(BindableColumn<?> column) {
49 return new Length(column);
50 }
51 }