1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.mybatis.generator.codegen.mybatis3.xmlmapper.elements;
17
18 import java.util.Iterator;
19
20 import org.mybatis.generator.api.IntrospectedColumn;
21 import org.mybatis.generator.api.dom.OutputUtilities;
22 import org.mybatis.generator.api.dom.xml.Attribute;
23 import org.mybatis.generator.api.dom.xml.TextElement;
24 import org.mybatis.generator.api.dom.xml.XmlElement;
25 import org.mybatis.generator.codegen.mybatis3.MyBatis3FormattingUtilities;
26
27
28
29
30
31
32 public class UpdateByPrimaryKeyWithoutBLOBsElementGenerator extends
33 AbstractXmlElementGenerator {
34
35 private boolean isSimple;
36
37 public UpdateByPrimaryKeyWithoutBLOBsElementGenerator(boolean isSimple) {
38 super();
39 this.isSimple = isSimple;
40 }
41
42 @Override
43 public void addElements(XmlElement parentElement) {
44 XmlElement answer = new XmlElement("update");
45
46 answer.addAttribute(new Attribute(
47 "id", introspectedTable.getUpdateByPrimaryKeyStatementId()));
48 answer.addAttribute(new Attribute("parameterType",
49 introspectedTable.getBaseRecordType()));
50
51 context.getCommentGenerator().addComment(answer);
52
53 StringBuilder sb = new StringBuilder();
54 sb.append("update ");
55 sb.append(introspectedTable.getFullyQualifiedTableNameAtRuntime());
56 answer.addElement(new TextElement(sb.toString()));
57
58
59 sb.setLength(0);
60 sb.append("set ");
61
62 Iterator<IntrospectedColumn> iter;
63 if (isSimple) {
64 iter = introspectedTable.getNonPrimaryKeyColumns().iterator();
65 } else {
66 iter = introspectedTable.getBaseColumns().iterator();
67 }
68 while (iter.hasNext()) {
69 IntrospectedColumn introspectedColumn = iter.next();
70
71 sb.append(MyBatis3FormattingUtilities
72 .getEscapedColumnName(introspectedColumn));
73 sb.append(" = ");
74 sb.append(MyBatis3FormattingUtilities
75 .getParameterClause(introspectedColumn));
76
77 if (iter.hasNext()) {
78 sb.append(',');
79 }
80
81 answer.addElement(new TextElement(sb.toString()));
82
83
84 if (iter.hasNext()) {
85 sb.setLength(0);
86 OutputUtilities.xmlIndent(sb, 1);
87 }
88 }
89
90 boolean and = false;
91 for (IntrospectedColumn introspectedColumn : introspectedTable
92 .getPrimaryKeyColumns()) {
93 sb.setLength(0);
94 if (and) {
95 sb.append(" and ");
96 } else {
97 sb.append("where ");
98 and = true;
99 }
100
101 sb.append(MyBatis3FormattingUtilities
102 .getEscapedColumnName(introspectedColumn));
103 sb.append(" = ");
104 sb.append(MyBatis3FormattingUtilities
105 .getParameterClause(introspectedColumn));
106 answer.addElement(new TextElement(sb.toString()));
107 }
108
109 if (context.getPlugins()
110 .sqlMapUpdateByPrimaryKeyWithoutBLOBsElementGenerated(answer,
111 introspectedTable)) {
112 parentElement.addElement(answer);
113 }
114 }
115 }