1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.mybatis.generator.codegen.mybatis3.javamapper.elements;
17
18 import static org.mybatis.generator.codegen.mybatis3.MyBatis3FormattingUtilities.getRenamedColumnNameForResultMap;
19 import static org.mybatis.generator.internal.util.StringUtility.stringHasValue;
20
21 import org.mybatis.generator.api.IntrospectedColumn;
22 import org.mybatis.generator.api.dom.java.FullyQualifiedJavaType;
23 import org.mybatis.generator.api.dom.java.Interface;
24 import org.mybatis.generator.api.dom.java.Method;
25 import org.mybatis.generator.codegen.AbstractGenerator;
26 import org.mybatis.generator.config.GeneratedKey;
27
28
29
30
31
32 public abstract class AbstractJavaMapperMethodGenerator extends
33 AbstractGenerator {
34 public abstract void addInterfaceElements(Interface interfaze);
35
36 public AbstractJavaMapperMethodGenerator() {
37 super();
38 }
39
40 protected String getResultAnnotation(Interface interfaze, IntrospectedColumn introspectedColumn,
41 boolean idColumn, boolean constructorBased) {
42 StringBuilder sb = new StringBuilder();
43 if (constructorBased) {
44 interfaze.addImportedType(introspectedColumn.getFullyQualifiedJavaType());
45 sb.append("@Arg(column=\"");
46 sb.append(getRenamedColumnNameForResultMap(introspectedColumn));
47 sb.append("\", javaType=");
48 sb.append(introspectedColumn.getFullyQualifiedJavaType().getShortName());
49 sb.append(".class");
50 } else {
51 sb.append("@Result(column=\"");
52 sb.append(getRenamedColumnNameForResultMap(introspectedColumn));
53 sb.append("\", property=\"");
54 sb.append(introspectedColumn.getJavaProperty());
55 sb.append('\"');
56 }
57
58 if (stringHasValue(introspectedColumn.getTypeHandler())) {
59 FullyQualifiedJavaType fqjt =
60 new FullyQualifiedJavaType(introspectedColumn.getTypeHandler());
61 interfaze.addImportedType(fqjt);
62 sb.append(", typeHandler=");
63 sb.append(fqjt.getShortName());
64 sb.append(".class");
65 }
66
67 sb.append(", jdbcType=JdbcType.");
68 sb.append(introspectedColumn.getJdbcTypeName());
69 if (idColumn) {
70 sb.append(", id=true");
71 }
72 sb.append(')');
73
74 return sb.toString();
75 }
76
77 protected void addGeneratedKeyAnnotation(Interface interfaze, Method method,
78 GeneratedKey gk) {
79 StringBuilder sb = new StringBuilder();
80 IntrospectedColumn introspectedColumn = introspectedTable.getColumn(gk.getColumn());
81 if (introspectedColumn != null) {
82 if (gk.isJdbcStandard()) {
83 interfaze.addImportedType(new FullyQualifiedJavaType("org.apache.ibatis.annotations.Options"));
84 sb.append("@Options(useGeneratedKeys=true,keyProperty=\"");
85 sb.append(introspectedColumn.getJavaProperty());
86 sb.append("\")");
87 method.addAnnotation(sb.toString());
88 } else {
89 interfaze.addImportedType(new FullyQualifiedJavaType("org.apache.ibatis.annotations.SelectKey"));
90 FullyQualifiedJavaType fqjt = introspectedColumn.getFullyQualifiedJavaType();
91 interfaze.addImportedType(fqjt);
92 sb.append("@SelectKey(statement=\"");
93 sb.append(gk.getRuntimeSqlStatement());
94 sb.append("\", keyProperty=\"");
95 sb.append(introspectedColumn.getJavaProperty());
96 sb.append("\", before=");
97 sb.append(gk.isIdentity() ? "false" : "true");
98 sb.append(", resultType=");
99 sb.append(fqjt.getShortName());
100 sb.append(".class)");
101 method.addAnnotation(sb.toString());
102 }
103 }
104 }
105 }