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 java.util.List;
19 import java.util.Set;
20 import java.util.TreeSet;
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.JavaVisibility;
26 import org.mybatis.generator.api.dom.java.Method;
27 import org.mybatis.generator.api.dom.java.Parameter;
28
29
30
31
32
33
34 public class SelectByPrimaryKeyMethodGenerator extends
35 AbstractJavaMapperMethodGenerator {
36
37 private boolean isSimple;
38
39 public SelectByPrimaryKeyMethodGenerator(boolean isSimple) {
40 super();
41 this.isSimple = isSimple;
42 }
43
44 @Override
45 public void addInterfaceElements(Interface interfaze) {
46 Set<FullyQualifiedJavaType> importedTypes = new TreeSet<FullyQualifiedJavaType>();
47 Method method = new Method();
48 method.setVisibility(JavaVisibility.PUBLIC);
49
50 FullyQualifiedJavaType returnType = introspectedTable.getRules()
51 .calculateAllFieldsClass();
52 method.setReturnType(returnType);
53 importedTypes.add(returnType);
54
55 method.setName(introspectedTable.getSelectByPrimaryKeyStatementId());
56
57 if (!isSimple && introspectedTable.getRules().generatePrimaryKeyClass()) {
58 FullyQualifiedJavaType type = new FullyQualifiedJavaType(
59 introspectedTable.getPrimaryKeyType());
60 importedTypes.add(type);
61 method.addParameter(new Parameter(type, "key"));
62 } else {
63
64
65
66
67 List<IntrospectedColumn> introspectedColumns = introspectedTable
68 .getPrimaryKeyColumns();
69 boolean annotate = introspectedColumns.size() > 1;
70 if (annotate) {
71 importedTypes.add(new FullyQualifiedJavaType(
72 "org.apache.ibatis.annotations.Param"));
73 }
74 StringBuilder sb = new StringBuilder();
75 for (IntrospectedColumn introspectedColumn : introspectedColumns) {
76 FullyQualifiedJavaType type = introspectedColumn
77 .getFullyQualifiedJavaType();
78 importedTypes.add(type);
79 Parameter parameter = new Parameter(type, introspectedColumn
80 .getJavaProperty());
81 if (annotate) {
82 sb.setLength(0);
83 sb.append("@Param(\"");
84 sb.append(introspectedColumn.getJavaProperty());
85 sb.append("\")");
86 parameter.addAnnotation(sb.toString());
87 }
88 method.addParameter(parameter);
89 }
90 }
91
92 addMapperAnnotations(interfaze, method);
93
94 context.getCommentGenerator().addGeneralMethodComment(method,
95 introspectedTable);
96
97 if (context.getPlugins().clientSelectByPrimaryKeyMethodGenerated(
98 method, interfaze, introspectedTable)) {
99 interfaze.addImportedTypes(importedTypes);
100 interfaze.addMethod(method);
101 }
102 }
103
104 public void addMapperAnnotations(Interface interfaze, Method method) {
105 }
106 }