1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.mybatis.generator.codegen.mybatis3.javamapper;
17
18 import static org.mybatis.generator.internal.util.StringUtility.stringHasValue;
19 import static org.mybatis.generator.internal.util.messages.Messages.getString;
20
21 import java.util.ArrayList;
22 import java.util.List;
23
24 import org.mybatis.generator.api.CommentGenerator;
25 import org.mybatis.generator.api.dom.java.CompilationUnit;
26 import org.mybatis.generator.api.dom.java.FullyQualifiedJavaType;
27 import org.mybatis.generator.api.dom.java.Interface;
28 import org.mybatis.generator.api.dom.java.JavaVisibility;
29 import org.mybatis.generator.codegen.AbstractJavaClientGenerator;
30 import org.mybatis.generator.codegen.AbstractXmlGenerator;
31 import org.mybatis.generator.codegen.mybatis3.javamapper.elements.AbstractJavaMapperMethodGenerator;
32 import org.mybatis.generator.codegen.mybatis3.javamapper.elements.CountByExampleMethodGenerator;
33 import org.mybatis.generator.codegen.mybatis3.javamapper.elements.DeleteByExampleMethodGenerator;
34 import org.mybatis.generator.codegen.mybatis3.javamapper.elements.DeleteByPrimaryKeyMethodGenerator;
35 import org.mybatis.generator.codegen.mybatis3.javamapper.elements.InsertMethodGenerator;
36 import org.mybatis.generator.codegen.mybatis3.javamapper.elements.InsertSelectiveMethodGenerator;
37 import org.mybatis.generator.codegen.mybatis3.javamapper.elements.SelectByExampleWithBLOBsMethodGenerator;
38 import org.mybatis.generator.codegen.mybatis3.javamapper.elements.SelectByExampleWithoutBLOBsMethodGenerator;
39 import org.mybatis.generator.codegen.mybatis3.javamapper.elements.SelectByPrimaryKeyMethodGenerator;
40 import org.mybatis.generator.codegen.mybatis3.javamapper.elements.UpdateByExampleSelectiveMethodGenerator;
41 import org.mybatis.generator.codegen.mybatis3.javamapper.elements.UpdateByExampleWithBLOBsMethodGenerator;
42 import org.mybatis.generator.codegen.mybatis3.javamapper.elements.UpdateByExampleWithoutBLOBsMethodGenerator;
43 import org.mybatis.generator.codegen.mybatis3.javamapper.elements.UpdateByPrimaryKeySelectiveMethodGenerator;
44 import org.mybatis.generator.codegen.mybatis3.javamapper.elements.UpdateByPrimaryKeyWithBLOBsMethodGenerator;
45 import org.mybatis.generator.codegen.mybatis3.javamapper.elements.UpdateByPrimaryKeyWithoutBLOBsMethodGenerator;
46 import org.mybatis.generator.codegen.mybatis3.xmlmapper.XMLMapperGenerator;
47 import org.mybatis.generator.config.PropertyRegistry;
48
49
50
51
52
53 public class JavaMapperGenerator extends AbstractJavaClientGenerator {
54
55
56
57
58 public JavaMapperGenerator() {
59 super(true);
60 }
61
62 public JavaMapperGenerator(boolean requiresMatchedXMLGenerator) {
63 super(requiresMatchedXMLGenerator);
64 }
65
66 @Override
67 public List<CompilationUnit> getCompilationUnits() {
68 progressCallback.startTask(getString("Progress.17",
69 introspectedTable.getFullyQualifiedTable().toString()));
70 CommentGenerator commentGenerator = context.getCommentGenerator();
71
72 FullyQualifiedJavaType type = new FullyQualifiedJavaType(
73 introspectedTable.getMyBatis3JavaMapperType());
74 Interface interfaze = new Interface(type);
75 interfaze.setVisibility(JavaVisibility.PUBLIC);
76 commentGenerator.addJavaFileComment(interfaze);
77
78 String rootInterface = introspectedTable
79 .getTableConfigurationProperty(PropertyRegistry.ANY_ROOT_INTERFACE);
80 if (!stringHasValue(rootInterface)) {
81 rootInterface = context.getJavaClientGeneratorConfiguration()
82 .getProperty(PropertyRegistry.ANY_ROOT_INTERFACE);
83 }
84
85 if (stringHasValue(rootInterface)) {
86 FullyQualifiedJavaType fqjt = new FullyQualifiedJavaType(
87 rootInterface);
88 interfaze.addSuperInterface(fqjt);
89 interfaze.addImportedType(fqjt);
90 }
91
92 addCountByExampleMethod(interfaze);
93 addDeleteByExampleMethod(interfaze);
94 addDeleteByPrimaryKeyMethod(interfaze);
95
96 addInsertSelectiveMethod(interfaze);
97 addSelectByExampleWithBLOBsMethod(interfaze);
98 addSelectByExampleWithoutBLOBsMethod(interfaze);
99 addSelectByPrimaryKeyMethod(interfaze);
100 addUpdateByExampleSelectiveMethod(interfaze);
101 addUpdateByExampleWithBLOBsMethod(interfaze);
102 addUpdateByExampleWithoutBLOBsMethod(interfaze);
103 addUpdateByPrimaryKeySelectiveMethod(interfaze);
104 addUpdateByPrimaryKeyWithBLOBsMethod(interfaze);
105
106
107 List<CompilationUnit> answer = new ArrayList<CompilationUnit>();
108 if (context.getPlugins().clientGenerated(interfaze, null,
109 introspectedTable)) {
110 answer.add(interfaze);
111 }
112
113 List<CompilationUnit> extraCompilationUnits = getExtraCompilationUnits();
114 if (extraCompilationUnits != null) {
115 answer.addAll(extraCompilationUnits);
116 }
117
118 return answer;
119 }
120
121 protected void addCountByExampleMethod(Interface interfaze) {
122 if (introspectedTable.getRules().generateCountByExample()) {
123 AbstractJavaMapperMethodGenerator methodGenerator = new CountByExampleMethodGenerator();
124 initializeAndExecuteGenerator(methodGenerator, interfaze);
125 }
126 }
127
128 protected void addDeleteByExampleMethod(Interface interfaze) {
129 if (introspectedTable.getRules().generateDeleteByExample()) {
130 AbstractJavaMapperMethodGenerator methodGenerator = new DeleteByExampleMethodGenerator();
131 initializeAndExecuteGenerator(methodGenerator, interfaze);
132 }
133 }
134
135 protected void addDeleteByPrimaryKeyMethod(Interface interfaze) {
136 if (introspectedTable.getRules().generateDeleteByPrimaryKey()) {
137 AbstractJavaMapperMethodGenerator methodGenerator = new DeleteByPrimaryKeyMethodGenerator(false);
138 initializeAndExecuteGenerator(methodGenerator, interfaze);
139 }
140 }
141
142 protected void addInsertMethod(Interface interfaze) {
143 if (introspectedTable.getRules().generateInsert()) {
144 AbstractJavaMapperMethodGenerator methodGenerator = new InsertMethodGenerator(false);
145 initializeAndExecuteGenerator(methodGenerator, interfaze);
146 }
147 }
148
149 protected void addInsertSelectiveMethod(Interface interfaze) {
150 if (introspectedTable.getRules().generateInsertSelective()) {
151 AbstractJavaMapperMethodGenerator methodGenerator = new InsertSelectiveMethodGenerator();
152 initializeAndExecuteGenerator(methodGenerator, interfaze);
153 }
154 }
155
156 protected void addSelectByExampleWithBLOBsMethod(Interface interfaze) {
157 if (introspectedTable.getRules().generateSelectByExampleWithBLOBs()) {
158 AbstractJavaMapperMethodGenerator methodGenerator = new SelectByExampleWithBLOBsMethodGenerator();
159 initializeAndExecuteGenerator(methodGenerator, interfaze);
160 }
161 }
162
163 protected void addSelectByExampleWithoutBLOBsMethod(Interface interfaze) {
164 if (introspectedTable.getRules().generateSelectByExampleWithoutBLOBs()) {
165 AbstractJavaMapperMethodGenerator methodGenerator = new SelectByExampleWithoutBLOBsMethodGenerator();
166 initializeAndExecuteGenerator(methodGenerator, interfaze);
167 }
168 }
169
170 protected void addSelectByPrimaryKeyMethod(Interface interfaze) {
171 if (introspectedTable.getRules().generateSelectByPrimaryKey()) {
172 AbstractJavaMapperMethodGenerator methodGenerator = new SelectByPrimaryKeyMethodGenerator(false);
173 initializeAndExecuteGenerator(methodGenerator, interfaze);
174 }
175 }
176
177 protected void addUpdateByExampleSelectiveMethod(Interface interfaze) {
178 if (introspectedTable.getRules().generateUpdateByExampleSelective()) {
179 AbstractJavaMapperMethodGenerator methodGenerator = new UpdateByExampleSelectiveMethodGenerator();
180 initializeAndExecuteGenerator(methodGenerator, interfaze);
181 }
182 }
183
184 protected void addUpdateByExampleWithBLOBsMethod(Interface interfaze) {
185 if (introspectedTable.getRules().generateUpdateByExampleWithBLOBs()) {
186 AbstractJavaMapperMethodGenerator methodGenerator = new UpdateByExampleWithBLOBsMethodGenerator();
187 initializeAndExecuteGenerator(methodGenerator, interfaze);
188 }
189 }
190
191 protected void addUpdateByExampleWithoutBLOBsMethod(Interface interfaze) {
192 if (introspectedTable.getRules().generateUpdateByExampleWithoutBLOBs()) {
193 AbstractJavaMapperMethodGenerator methodGenerator = new UpdateByExampleWithoutBLOBsMethodGenerator();
194 initializeAndExecuteGenerator(methodGenerator, interfaze);
195 }
196 }
197
198 protected void addUpdateByPrimaryKeySelectiveMethod(Interface interfaze) {
199 if (introspectedTable.getRules().generateUpdateByPrimaryKeySelective()) {
200 AbstractJavaMapperMethodGenerator methodGenerator = new UpdateByPrimaryKeySelectiveMethodGenerator();
201 initializeAndExecuteGenerator(methodGenerator, interfaze);
202 }
203 }
204
205 protected void addUpdateByPrimaryKeyWithBLOBsMethod(Interface interfaze) {
206 if (introspectedTable.getRules().generateUpdateByPrimaryKeyWithBLOBs()) {
207 AbstractJavaMapperMethodGenerator methodGenerator = new UpdateByPrimaryKeyWithBLOBsMethodGenerator();
208 initializeAndExecuteGenerator(methodGenerator, interfaze);
209 }
210 }
211
212 protected void addUpdateByPrimaryKeyWithoutBLOBsMethod(Interface interfaze) {
213 if (introspectedTable.getRules()
214 .generateUpdateByPrimaryKeyWithoutBLOBs()) {
215 AbstractJavaMapperMethodGenerator methodGenerator = new UpdateByPrimaryKeyWithoutBLOBsMethodGenerator();
216 initializeAndExecuteGenerator(methodGenerator, interfaze);
217 }
218 }
219
220 protected void initializeAndExecuteGenerator(
221 AbstractJavaMapperMethodGenerator methodGenerator,
222 Interface interfaze) {
223 methodGenerator.setContext(context);
224 methodGenerator.setIntrospectedTable(introspectedTable);
225 methodGenerator.setProgressCallback(progressCallback);
226 methodGenerator.setWarnings(warnings);
227 methodGenerator.addInterfaceElements(interfaze);
228 }
229
230 public List<CompilationUnit> getExtraCompilationUnits() {
231 return null;
232 }
233
234 @Override
235 public AbstractXmlGenerator getMatchedXMLGenerator() {
236 return new XMLMapperGenerator();
237 }
238 }