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
22 import org.mybatis.generator.api.dom.java.FullyQualifiedJavaType;
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 public class ProviderCountByExampleMethodGenerator extends AbstractJavaProviderMethodGenerator {
29
30 @Override
31 public void addClassElements(TopLevelClass topLevelClass) {
32 FullyQualifiedJavaType fqjt = new FullyQualifiedJavaType(introspectedTable.getExampleType());
33 Set<FullyQualifiedJavaType> importedTypes = initializeImportedTypes(fqjt);
34
35 Method method = new Method(introspectedTable.getCountByExampleStatementId());
36 method.setVisibility(JavaVisibility.PUBLIC);
37 method.setReturnType(FullyQualifiedJavaType.getStringInstance());
38 method.addParameter(new Parameter(fqjt, "example"));
39
40 context.getCommentGenerator().addGeneralMethodComment(method, introspectedTable);
41
42 method.addBodyLine("SQL sql = new SQL();");
43 method.addBodyLine(String.format("sql.SELECT(\"count(*)\").FROM(\"%s\");",
44 escapeStringForJava(introspectedTable.getAliasedFullyQualifiedTableNameAtRuntime())));
45 method.addBodyLine("applyWhere(sql, example, false);");
46 method.addBodyLine("return sql.toString();");
47
48 if (context.getPlugins().providerCountByExampleMethodGenerated(method, topLevelClass, introspectedTable)) {
49 topLevelClass.addImportedTypes(importedTypes);
50 topLevelClass.addMethod(method);
51 }
52 }
53 }