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 UpdateByExampleSelectiveMethodGenerator extends
34 AbstractDAOElementGenerator {
35
36 @Override
37 public void addImplementationElements(TopLevelClass topLevelClass) {
38 Set<FullyQualifiedJavaType> importedTypes = new TreeSet<FullyQualifiedJavaType>();
39 Method method = getMethodShell(importedTypes);
40
41 method
42 .addBodyLine("UpdateByExampleParms parms = new UpdateByExampleParms(record, example);");
43
44 StringBuilder sb = new StringBuilder();
45
46 sb.append("int rows = ");
47
48 sb.append(daoTemplate.getUpdateMethod(introspectedTable
49 .getIbatis2SqlMapNamespace(), introspectedTable
50 .getUpdateByExampleSelectiveStatementId(), "parms"));
51 method.addBodyLine(sb.toString());
52
53 method.addBodyLine("return rows;");
54
55 if (context.getPlugins()
56 .clientUpdateByExampleSelectiveMethodGenerated(method,
57 topLevelClass, introspectedTable)) {
58 topLevelClass.addImportedTypes(importedTypes);
59 topLevelClass.addMethod(method);
60 }
61 }
62
63 @Override
64 public void addInterfaceElements(Interface interfaze) {
65 if (getExampleMethodVisibility() == JavaVisibility.PUBLIC) {
66 Set<FullyQualifiedJavaType> importedTypes = new TreeSet<FullyQualifiedJavaType>();
67 Method method = getMethodShell(importedTypes);
68
69 if (context.getPlugins()
70 .clientUpdateByExampleSelectiveMethodGenerated(method,
71 interfaze, introspectedTable)) {
72 interfaze.addImportedTypes(importedTypes);
73 interfaze.addMethod(method);
74 }
75 }
76 }
77
78 private Method getMethodShell(Set<FullyQualifiedJavaType> importedTypes) {
79 FullyQualifiedJavaType parameterType;
80
81 if (introspectedTable.getRules().generateRecordWithBLOBsClass()) {
82 parameterType = new FullyQualifiedJavaType(introspectedTable
83 .getRecordWithBLOBsType());
84 } else if (introspectedTable.getRules().generateBaseRecordClass()) {
85 parameterType = new FullyQualifiedJavaType(introspectedTable
86 .getBaseRecordType());
87 } else {
88 parameterType = new FullyQualifiedJavaType(introspectedTable
89 .getPrimaryKeyType());
90 }
91
92 importedTypes.add(parameterType);
93
94 Method method = new Method();
95 method.setVisibility(getExampleMethodVisibility());
96 method.setReturnType(FullyQualifiedJavaType.getIntInstance());
97 method.setName(getDAOMethodNameCalculator()
98 .getUpdateByExampleSelectiveMethodName(introspectedTable));
99 method.addParameter(new Parameter(parameterType, "record"));
100 method.addParameter(new Parameter(new FullyQualifiedJavaType(
101 introspectedTable.getExampleType()), "example"));
102
103 for (FullyQualifiedJavaType fqjt : daoTemplate.getCheckedExceptions()) {
104 method.addException(fqjt);
105 importedTypes.add(fqjt);
106 }
107
108 context.getCommentGenerator().addGeneralMethodComment(method,
109 introspectedTable);
110
111 return method;
112 }
113 }