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 DeleteByExampleMethodGenerator extends AbstractDAOElementGenerator {
34
35 public DeleteByExampleMethodGenerator() {
36 super();
37 }
38
39 @Override
40 public void addImplementationElements(TopLevelClass topLevelClass) {
41 Set<FullyQualifiedJavaType> importedTypes = new TreeSet<FullyQualifiedJavaType>();
42 Method method = getMethodShell(importedTypes);
43
44 StringBuilder sb = new StringBuilder();
45 sb.append("int rows = ");
46 sb.append(daoTemplate.getDeleteMethod(introspectedTable
47 .getIbatis2SqlMapNamespace(), introspectedTable
48 .getDeleteByExampleStatementId(), "example"));
49 method.addBodyLine(sb.toString());
50 method.addBodyLine("return rows;");
51
52 if (context.getPlugins().clientDeleteByExampleMethodGenerated(
53 method, topLevelClass, introspectedTable)) {
54 topLevelClass.addImportedTypes(importedTypes);
55 topLevelClass.addMethod(method);
56 }
57 }
58
59 @Override
60 public void addInterfaceElements(Interface interfaze) {
61 if (getExampleMethodVisibility() == JavaVisibility.PUBLIC) {
62 Set<FullyQualifiedJavaType> importedTypes = new TreeSet<FullyQualifiedJavaType>();
63 Method method = getMethodShell(importedTypes);
64
65 if (context.getPlugins().clientDeleteByExampleMethodGenerated(
66 method, interfaze, introspectedTable)) {
67 interfaze.addImportedTypes(importedTypes);
68 interfaze.addMethod(method);
69 }
70 }
71 }
72
73 private Method getMethodShell(Set<FullyQualifiedJavaType> importedTypes) {
74 FullyQualifiedJavaType type = new FullyQualifiedJavaType(
75 introspectedTable.getExampleType());
76 importedTypes.add(type);
77
78 Method method = new Method();
79 method.setVisibility(getExampleMethodVisibility());
80 method.setReturnType(FullyQualifiedJavaType.getIntInstance());
81 method.setName(getDAOMethodNameCalculator()
82 .getDeleteByExampleMethodName(introspectedTable));
83 method.addParameter(new Parameter(type, "example"));
84
85 for (FullyQualifiedJavaType fqjt : daoTemplate.getCheckedExceptions()) {
86 method.addException(fqjt);
87 importedTypes.add(fqjt);
88 }
89
90 context.getCommentGenerator().addGeneralMethodComment(method,
91 introspectedTable);
92
93 return method;
94 }
95 }