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