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 UpdateByPrimaryKeyWithBLOBsElementGenerator extends
33 AbstractXmlElementGenerator {
34
35 public UpdateByPrimaryKeyWithBLOBsElementGenerator() {
36 super();
37 }
38
39 @Override
40 public void addElements(XmlElement parentElement) {
41 XmlElement answer = new XmlElement("update");
42
43 answer
44 .addAttribute(new Attribute(
45 "id", introspectedTable.getUpdateByPrimaryKeyWithBLOBsStatementId()));
46
47 String parameterType;
48 if (introspectedTable.getRules().generateRecordWithBLOBsClass()) {
49 parameterType = introspectedTable.getRecordWithBLOBsType();
50 } else {
51 parameterType = introspectedTable.getBaseRecordType();
52 }
53
54 answer.addAttribute(new Attribute("parameterType",
55 parameterType));
56
57 context.getCommentGenerator().addComment(answer);
58
59 StringBuilder sb = new StringBuilder();
60
61 sb.append("update ");
62 sb.append(introspectedTable.getFullyQualifiedTableNameAtRuntime());
63 answer.addElement(new TextElement(sb.toString()));
64
65
66 sb.setLength(0);
67 sb.append("set ");
68
69 Iterator<IntrospectedColumn> iter = introspectedTable
70 .getNonPrimaryKeyColumns().iterator();
71 while (iter.hasNext()) {
72 IntrospectedColumn introspectedColumn = iter.next();
73
74 sb.append(MyBatis3FormattingUtilities
75 .getEscapedColumnName(introspectedColumn));
76 sb.append(" = ");
77 sb.append(MyBatis3FormattingUtilities
78 .getParameterClause(introspectedColumn));
79
80 if (iter.hasNext()) {
81 sb.append(',');
82 }
83
84 answer.addElement(new TextElement(sb.toString()));
85
86
87 if (iter.hasNext()) {
88 sb.setLength(0);
89 OutputUtilities.xmlIndent(sb, 1);
90 }
91 }
92
93 boolean and = false;
94 for (IntrospectedColumn introspectedColumn : introspectedTable
95 .getPrimaryKeyColumns()) {
96 sb.setLength(0);
97 if (and) {
98 sb.append(" and ");
99 } else {
100 sb.append("where ");
101 and = true;
102 }
103
104 sb.append(MyBatis3FormattingUtilities
105 .getEscapedColumnName(introspectedColumn));
106 sb.append(" = ");
107 sb.append(MyBatis3FormattingUtilities
108 .getParameterClause(introspectedColumn));
109 answer.addElement(new TextElement(sb.toString()));
110 }
111
112 if (context.getPlugins()
113 .sqlMapUpdateByPrimaryKeyWithBLOBsElementGenerated(answer,
114 introspectedTable)) {
115 parentElement.addElement(answer);
116 }
117 }
118 }