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 ProviderDeleteByExampleMethodGenerator extends
35 AbstractJavaProviderMethodGenerator {
36
37 public ProviderDeleteByExampleMethodGenerator(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.DELETE_FROM");
49 staticImports.add("org.apache.ibatis.jdbc.SqlBuilder.SQL");
50 } else {
51 importedTypes.add(NEW_BUILDER_IMPORT);
52 }
53
54 FullyQualifiedJavaType fqjt = new FullyQualifiedJavaType(introspectedTable.getExampleType());
55 importedTypes.add(fqjt);
56
57 Method method = new Method(
58 introspectedTable.getDeleteByExampleStatementId());
59 method.setVisibility(JavaVisibility.PUBLIC);
60 method.setReturnType(FullyQualifiedJavaType.getStringInstance());
61 method.addParameter(new Parameter(fqjt, "example"));
62
63 context.getCommentGenerator().addGeneralMethodComment(method,
64 introspectedTable);
65
66 if (useLegacyBuilder) {
67 method.addBodyLine("BEGIN();");
68 method.addBodyLine(String.format("DELETE_FROM(\"%s\");",
69 escapeStringForJava(introspectedTable.getAliasedFullyQualifiedTableNameAtRuntime())));
70 method.addBodyLine("applyWhere(example, false);");
71 method.addBodyLine("return SQL();");
72 } else {
73 method.addBodyLine("SQL sql = new SQL();");
74 method.addBodyLine(String.format("sql.DELETE_FROM(\"%s\");",
75 escapeStringForJava(introspectedTable.getAliasedFullyQualifiedTableNameAtRuntime())));
76 method.addBodyLine("applyWhere(sql, example, false);");
77 method.addBodyLine("return sql.toString();");
78 }
79
80 if (context.getPlugins().providerDeleteByExampleMethodGenerated(method, topLevelClass,
81 introspectedTable)) {
82 topLevelClass.addStaticImports(staticImports);
83 topLevelClass.addImportedTypes(importedTypes);
84 topLevelClass.addMethod(method);
85 }
86 }
87 }