1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.mybatis.generator.codegen.mybatis3.javamapper.elements.annotated;
17
18 import static org.mybatis.generator.api.dom.OutputUtilities.javaIndent;
19
20 import java.util.Iterator;
21
22 import org.mybatis.generator.api.IntrospectedColumn;
23 import org.mybatis.generator.api.dom.java.FullyQualifiedJavaType;
24 import org.mybatis.generator.api.dom.java.Interface;
25 import org.mybatis.generator.api.dom.java.Method;
26 import org.mybatis.generator.codegen.mybatis3.javamapper.elements.SelectByExampleWithoutBLOBsMethodGenerator;
27
28
29
30
31
32 public class AnnotatedSelectByExampleWithoutBLOBsMethodGenerator extends
33 SelectByExampleWithoutBLOBsMethodGenerator {
34
35 public AnnotatedSelectByExampleWithoutBLOBsMethodGenerator() {
36 super();
37 }
38
39 @Override
40 public void addMapperAnnotations(Interface interfaze, Method method) {
41 FullyQualifiedJavaType fqjt = new FullyQualifiedJavaType(introspectedTable.getMyBatis3SqlProviderType());
42 interfaze.addImportedType(new FullyQualifiedJavaType("org.apache.ibatis.annotations.SelectProvider"));
43 interfaze.addImportedType(new FullyQualifiedJavaType("org.apache.ibatis.type.JdbcType"));
44
45 if (introspectedTable.isConstructorBased()) {
46 interfaze.addImportedType(new FullyQualifiedJavaType("org.apache.ibatis.annotations.Arg"));
47 interfaze.addImportedType(new FullyQualifiedJavaType("org.apache.ibatis.annotations.ConstructorArgs"));
48 } else {
49 interfaze.addImportedType(new FullyQualifiedJavaType("org.apache.ibatis.annotations.Result"));
50 interfaze.addImportedType(new FullyQualifiedJavaType("org.apache.ibatis.annotations.Results"));
51 }
52
53 StringBuilder sb = new StringBuilder();
54 sb.append("@SelectProvider(type=");
55 sb.append(fqjt.getShortName());
56 sb.append(".class, method=\"");
57 sb.append(introspectedTable.getSelectByExampleStatementId());
58 sb.append("\")");
59
60 method.addAnnotation(sb.toString());
61
62 if (introspectedTable.isConstructorBased()) {
63 method.addAnnotation("@ConstructorArgs({");
64 } else {
65 method.addAnnotation("@Results({");
66 }
67
68 Iterator<IntrospectedColumn> iterPk = introspectedTable.getPrimaryKeyColumns().iterator();
69 Iterator<IntrospectedColumn> iterNonPk = introspectedTable.getBaseColumns().iterator();
70 while (iterPk.hasNext()) {
71 IntrospectedColumn introspectedColumn = iterPk.next();
72 sb.setLength(0);
73 javaIndent(sb, 1);
74 sb.append(getResultAnnotation(interfaze, introspectedColumn, true,
75 introspectedTable.isConstructorBased()));
76
77 if (iterPk.hasNext() || iterNonPk.hasNext()) {
78 sb.append(',');
79 }
80
81 method.addAnnotation(sb.toString());
82 }
83
84 while (iterNonPk.hasNext()) {
85 IntrospectedColumn introspectedColumn = iterNonPk.next();
86 sb.setLength(0);
87 javaIndent(sb, 1);
88 sb.append(getResultAnnotation(interfaze, introspectedColumn, false,
89 introspectedTable.isConstructorBased()));
90
91 if (iterNonPk.hasNext()) {
92 sb.append(',');
93 }
94
95 method.addAnnotation(sb.toString());
96 }
97
98 method.addAnnotation("})");
99 }
100 }