1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package examples.type_conversion;
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 ToBase64 extends AbstractTypeConvertingFunction<byte[], String, ToBase64> {
28
29 protected ToBase64(BasicColumn column) {
30 super(column);
31 }
32
33 @Override
34 public Optional<JDBCType> jdbcType() {
35 return Optional.of(JDBCType.VARCHAR);
36 }
37
38 @Override
39 public FragmentAndParameters render(RenderingContext renderingContext) {
40 return column.render(renderingContext)
41 .mapFragment(f -> "TO_BASE64(" + f + ")");
42 }
43
44 @Override
45 protected ToBase64 copy() {
46 return new ToBase64(column);
47 }
48
49 public static ToBase64 toBase64(BindableColumn<byte[]> column) {
50 return new ToBase64(column);
51 }
52 }