1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.mybatis.generator.codegen.mybatis3.javamapper.elements.sqlprovider;
17
18 import static org.mybatis.generator.internal.util.StringUtility.escapeStringForJava;
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.JavaVisibility;
25 import org.mybatis.generator.api.dom.java.Method;
26 import org.mybatis.generator.api.dom.java.Parameter;
27 import org.mybatis.generator.api.dom.java.TopLevelClass;
28
29
30
31
32
33
34 public class ProviderCountByExampleMethodGenerator extends
35 AbstractJavaProviderMethodGenerator {
36
37 public ProviderCountByExampleMethodGenerator(boolean useLegacyBuilder) {
38 super(useLegacyBuilder);
39 }
40
41 @Override
42 public void addClassElements(TopLevelClass topLevelClass) {
43 Set<String> staticImports = new TreeSet<String>();
44 Set<FullyQualifiedJavaType> importedTypes = new TreeSet<FullyQualifiedJavaType>();
45
46 if (useLegacyBuilder) {
47 staticImports.add("org.apache.ibatis.jdbc.SqlBuilder.BEGIN");
48 staticImports.add("org.apache.ibatis.jdbc.SqlBuilder.FROM");
49 staticImports.add("org.apache.ibatis.jdbc.SqlBuilder.SELECT");
50 staticImports.add("org.apache.ibatis.jdbc.SqlBuilder.SQL");
51 } else {
52 importedTypes.add(NEW_BUILDER_IMPORT);
53 }
54
55 FullyQualifiedJavaType fqjt = new FullyQualifiedJavaType(introspectedTable.getExampleType());
56 importedTypes.add(fqjt);
57
58 Method method = new Method(
59 introspectedTable.getCountByExampleStatementId());
60 method.setVisibility(JavaVisibility.PUBLIC);
61 method.setReturnType(FullyQualifiedJavaType.getStringInstance());
62 method.addParameter(new Parameter(fqjt, "example"));
63
64 context.getCommentGenerator().addGeneralMethodComment(method,
65 introspectedTable);
66
67 if (useLegacyBuilder) {
68 method.addBodyLine("BEGIN();");
69 method.addBodyLine("SELECT(\"count(*)\");");
70 method.addBodyLine(String.format("FROM(\"%s\");",
71 escapeStringForJava(introspectedTable.getAliasedFullyQualifiedTableNameAtRuntime())));
72 method.addBodyLine("applyWhere(example, false);");
73 method.addBodyLine("return SQL();");
74 } else {
75 method.addBodyLine("SQL sql = new SQL();");
76 method.addBodyLine(String.format("sql.SELECT(\"count(*)\").FROM(\"%s\");",
77 escapeStringForJava(introspectedTable.getAliasedFullyQualifiedTableNameAtRuntime())));
78 method.addBodyLine("applyWhere(sql, example, false);");
79 method.addBodyLine("return sql.toString();");
80 }
81
82 if (context.getPlugins().providerCountByExampleMethodGenerated(method, topLevelClass,
83 introspectedTable)) {
84 topLevelClass.addStaticImports(staticImports);
85 topLevelClass.addImportedTypes(importedTypes);
86 topLevelClass.addMethod(method);
87 }
88 }
89 }