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 org.mybatis.generator.api.IntrospectedColumn;
19 import org.mybatis.generator.api.dom.xml.Attribute;
20 import org.mybatis.generator.api.dom.xml.TextElement;
21 import org.mybatis.generator.api.dom.xml.XmlElement;
22 import org.mybatis.generator.codegen.mybatis3.ListUtilities;
23 import org.mybatis.generator.codegen.mybatis3.MyBatis3FormattingUtilities;
24
25 public class UpdateByExampleSelectiveElementGenerator extends
26 AbstractXmlElementGenerator {
27
28 public UpdateByExampleSelectiveElementGenerator() {
29 super();
30 }
31
32 @Override
33 public void addElements(XmlElement parentElement) {
34 XmlElement answer = new XmlElement("update");
35
36 answer.addAttribute(new Attribute(
37 "id", introspectedTable.getUpdateByExampleSelectiveStatementId()));
38
39 answer.addAttribute(new Attribute("parameterType", "map"));
40
41 context.getCommentGenerator().addComment(answer);
42
43 StringBuilder sb = new StringBuilder();
44 sb.append("update ");
45 sb.append(introspectedTable.getAliasedFullyQualifiedTableNameAtRuntime());
46 answer.addElement(new TextElement(sb.toString()));
47
48 XmlElement dynamicElement = new XmlElement("set");
49 answer.addElement(dynamicElement);
50
51 for (IntrospectedColumn introspectedColumn :
52 ListUtilities.removeGeneratedAlwaysColumns(introspectedTable.getAllColumns())) {
53 sb.setLength(0);
54 sb.append(introspectedColumn.getJavaProperty("row."));
55 sb.append(" != null");
56 XmlElement isNotNullElement = new XmlElement("if");
57 isNotNullElement.addAttribute(new Attribute("test", sb.toString()));
58 dynamicElement.addElement(isNotNullElement);
59
60 sb.setLength(0);
61 sb.append(MyBatis3FormattingUtilities.getAliasedEscapedColumnName(introspectedColumn));
62 sb.append(" = ");
63 sb.append(MyBatis3FormattingUtilities.getParameterClause(introspectedColumn, "row."));
64 sb.append(',');
65
66 isNotNullElement.addElement(new TextElement(sb.toString()));
67 }
68
69 answer.addElement(getUpdateByExampleIncludeElement());
70
71 if (context.getPlugins().sqlMapUpdateByExampleSelectiveElementGenerated(answer, introspectedTable)) {
72 parentElement.addElement(answer);
73 }
74 }
75 }