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 java.util.Set;
19 import java.util.TreeSet;
20
21 import org.mybatis.generator.api.dom.java.FullyQualifiedJavaType;
22 import org.mybatis.generator.api.dom.java.Interface;
23 import org.mybatis.generator.api.dom.java.JavaVisibility;
24 import org.mybatis.generator.api.dom.java.Method;
25 import org.mybatis.generator.api.dom.java.Parameter;
26 import org.mybatis.generator.api.dom.java.TopLevelClass;
27
28
29
30
31
32
33 public class SelectByExampleWithBLOBsMethodGenerator extends
34 AbstractDAOElementGenerator {
35
36 private boolean generateForJava5;
37
38 public SelectByExampleWithBLOBsMethodGenerator(boolean generateForJava5) {
39 super();
40 this.generateForJava5 = generateForJava5;
41 }
42
43 @Override
44 public void addImplementationElements(TopLevelClass topLevelClass) {
45 Set<FullyQualifiedJavaType> importedTypes = new TreeSet<FullyQualifiedJavaType>();
46 Method method = getMethodShell(importedTypes);
47
48 if (generateForJava5) {
49 method.addSuppressTypeWarningsAnnotation();
50 }
51
52 StringBuilder sb = new StringBuilder();
53 sb.append(method.getReturnType().getShortName());
54 sb.append(" list = ");
55 sb.append(daoTemplate.getQueryForListMethod(introspectedTable
56 .getIbatis2SqlMapNamespace(), introspectedTable
57 .getSelectByExampleWithBLOBsStatementId(), "example"));
58 method.addBodyLine(sb.toString());
59 method.addBodyLine("return list;");
60
61 if (context.getPlugins()
62 .clientSelectByExampleWithBLOBsMethodGenerated(method,
63 topLevelClass, introspectedTable)) {
64 topLevelClass.addImportedTypes(importedTypes);
65 topLevelClass.addMethod(method);
66 }
67 }
68
69 @Override
70 public void addInterfaceElements(Interface interfaze) {
71 if (getExampleMethodVisibility() == JavaVisibility.PUBLIC) {
72 Set<FullyQualifiedJavaType> importedTypes = new TreeSet<FullyQualifiedJavaType>();
73 Method method = getMethodShell(importedTypes);
74
75 if (context.getPlugins()
76 .clientSelectByExampleWithBLOBsMethodGenerated(method,
77 interfaze, introspectedTable)) {
78 interfaze.addImportedTypes(importedTypes);
79 interfaze.addMethod(method);
80 }
81 }
82 }
83
84 private Method getMethodShell(Set<FullyQualifiedJavaType> importedTypes) {
85 FullyQualifiedJavaType type = new FullyQualifiedJavaType(
86 introspectedTable.getExampleType());
87 importedTypes.add(type);
88 importedTypes.add(FullyQualifiedJavaType.getNewListInstance());
89
90 Method method = new Method();
91 method.setVisibility(getExampleMethodVisibility());
92
93 FullyQualifiedJavaType returnType = FullyQualifiedJavaType
94 .getNewListInstance();
95 if (generateForJava5) {
96 FullyQualifiedJavaType fqjt;
97 if (introspectedTable.getRules().generateRecordWithBLOBsClass()) {
98 fqjt = new FullyQualifiedJavaType(introspectedTable
99 .getRecordWithBLOBsType());
100 } else {
101
102 fqjt = new FullyQualifiedJavaType(introspectedTable
103 .getBaseRecordType());
104 }
105
106 importedTypes.add(fqjt);
107 returnType.addTypeArgument(fqjt);
108 }
109 method.setReturnType(returnType);
110
111 method.setName(getDAOMethodNameCalculator()
112 .getSelectByExampleWithBLOBsMethodName(introspectedTable));
113 method.addParameter(new Parameter(type, "example"));
114
115 for (FullyQualifiedJavaType fqjt : daoTemplate.getCheckedExceptions()) {
116 method.addException(fqjt);
117 importedTypes.add(fqjt);
118 }
119
120 context.getCommentGenerator().addGeneralMethodComment(method,
121 introspectedTable);
122
123 return method;
124 }
125 }