1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.mybatis.generator.codegen.ibatis2.dao.elements;
17
18 import static org.mybatis.generator.internal.util.messages.Messages.getString;
19
20 import java.util.Set;
21 import java.util.TreeSet;
22
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 import org.mybatis.generator.api.dom.java.TopLevelClass;
29
30
31
32
33
34
35 public class SelectByExampleWithoutBLOBsMethodGenerator extends
36 AbstractDAOElementGenerator {
37
38 private boolean generateForJava5;
39
40 public SelectByExampleWithoutBLOBsMethodGenerator(boolean generateForJava5) {
41 super();
42 this.generateForJava5 = generateForJava5;
43 }
44
45 @Override
46 public void addImplementationElements(TopLevelClass topLevelClass) {
47 Set<FullyQualifiedJavaType> importedTypes = new TreeSet<FullyQualifiedJavaType>();
48 Method method = getMethodShell(importedTypes);
49
50 if (generateForJava5) {
51 method.addSuppressTypeWarningsAnnotation();
52 }
53
54 StringBuilder sb = new StringBuilder();
55 sb.append(method.getReturnType().getShortName());
56 sb.append(" list = ");
57 sb.append(daoTemplate.getQueryForListMethod(introspectedTable
58 .getIbatis2SqlMapNamespace(), introspectedTable
59 .getSelectByExampleStatementId(), "example"));
60 method.addBodyLine(sb.toString());
61 method.addBodyLine("return list;");
62
63 if (context.getPlugins()
64 .clientSelectByExampleWithoutBLOBsMethodGenerated(method,
65 topLevelClass, introspectedTable)) {
66 topLevelClass.addImportedTypes(importedTypes);
67 topLevelClass.addMethod(method);
68 }
69 }
70
71 @Override
72 public void addInterfaceElements(Interface interfaze) {
73 if (getExampleMethodVisibility() == JavaVisibility.PUBLIC) {
74 Set<FullyQualifiedJavaType> importedTypes = new TreeSet<FullyQualifiedJavaType>();
75 Method method = getMethodShell(importedTypes);
76
77 if (context.getPlugins()
78 .clientSelectByExampleWithoutBLOBsMethodGenerated(method,
79 interfaze, introspectedTable)) {
80 interfaze.addImportedTypes(importedTypes);
81 interfaze.addMethod(method);
82 }
83 }
84 }
85
86 private Method getMethodShell(Set<FullyQualifiedJavaType> importedTypes) {
87 FullyQualifiedJavaType type = new FullyQualifiedJavaType(
88 introspectedTable.getExampleType());
89 importedTypes.add(type);
90 importedTypes.add(FullyQualifiedJavaType.getNewListInstance());
91
92 Method method = new Method();
93 method.setVisibility(getExampleMethodVisibility());
94
95 FullyQualifiedJavaType returnType = FullyQualifiedJavaType
96 .getNewListInstance();
97 ;
98 if (generateForJava5) {
99 FullyQualifiedJavaType fqjt;
100 if (introspectedTable.getRules().generateBaseRecordClass()) {
101 fqjt = new FullyQualifiedJavaType(introspectedTable
102 .getBaseRecordType());
103 } else if (introspectedTable.getRules().generatePrimaryKeyClass()) {
104 fqjt = new FullyQualifiedJavaType(introspectedTable
105 .getPrimaryKeyType());
106 } else {
107 throw new RuntimeException(getString("RuntimeError.12"));
108 }
109
110 importedTypes.add(fqjt);
111 returnType.addTypeArgument(fqjt);
112 }
113
114 method.setReturnType(returnType);
115
116 method.setName(getDAOMethodNameCalculator()
117 .getSelectByExampleWithoutBLOBsMethodName(introspectedTable));
118 method.addParameter(new Parameter(type, "example"));
119
120 for (FullyQualifiedJavaType fqjt : daoTemplate.getCheckedExceptions()) {
121 method.addException(fqjt);
122 importedTypes.add(fqjt);
123 }
124
125 context.getCommentGenerator().addGeneralMethodComment(method,
126 introspectedTable);
127
128 return method;
129 }
130 }