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 static org.mybatis.generator.internal.util.StringUtility.stringHasValue;
19
20 import java.util.Iterator;
21
22 import org.mybatis.generator.api.IntrospectedColumn;
23 import org.mybatis.generator.api.dom.xml.Attribute;
24 import org.mybatis.generator.api.dom.xml.TextElement;
25 import org.mybatis.generator.api.dom.xml.XmlElement;
26 import org.mybatis.generator.codegen.mybatis3.MyBatis3FormattingUtilities;
27
28
29
30
31
32
33 public class SimpleSelectByPrimaryKeyElementGenerator extends
34 AbstractXmlElementGenerator {
35
36 public SimpleSelectByPrimaryKeyElementGenerator() {
37 super();
38 }
39
40 @Override
41 public void addElements(XmlElement parentElement) {
42 XmlElement answer = new XmlElement("select");
43
44 answer.addAttribute(new Attribute(
45 "id", introspectedTable.getSelectByPrimaryKeyStatementId()));
46 answer.addAttribute(new Attribute("resultMap",
47 introspectedTable.getBaseResultMapId()));
48
49 String parameterType;
50
51
52 if (introspectedTable.getPrimaryKeyColumns().size() > 1) {
53 parameterType = "map";
54 } else {
55 parameterType = introspectedTable.getPrimaryKeyColumns().get(0)
56 .getFullyQualifiedJavaType().toString();
57 }
58
59 answer.addAttribute(new Attribute("parameterType",
60 parameterType));
61
62 context.getCommentGenerator().addComment(answer);
63
64 StringBuilder sb = new StringBuilder();
65 sb.append("select ");
66
67 if (stringHasValue(introspectedTable.getSelectByPrimaryKeyQueryId())) {
68 sb.append('\'');
69 sb.append(introspectedTable.getSelectByPrimaryKeyQueryId());
70 sb.append("' as QUERYID,");
71 }
72
73 Iterator<IntrospectedColumn> iter = introspectedTable.getAllColumns()
74 .iterator();
75 while (iter.hasNext()) {
76 sb.append(MyBatis3FormattingUtilities.getSelectListPhrase(iter
77 .next()));
78
79 if (iter.hasNext()) {
80 sb.append(", ");
81 }
82
83 if (sb.length() > 80) {
84 answer.addElement(new TextElement(sb.toString()));
85 sb.setLength(0);
86 }
87 }
88
89 if (sb.length() > 0) {
90 answer.addElement(new TextElement(sb.toString()));
91 }
92
93 sb.setLength(0);
94 sb.append("from ");
95 sb.append(introspectedTable
96 .getAliasedFullyQualifiedTableNameAtRuntime());
97 answer.addElement(new TextElement(sb.toString()));
98
99 boolean and = false;
100 for (IntrospectedColumn introspectedColumn : introspectedTable
101 .getPrimaryKeyColumns()) {
102 sb.setLength(0);
103 if (and) {
104 sb.append(" and ");
105 } else {
106 sb.append("where ");
107 and = true;
108 }
109
110 sb.append(MyBatis3FormattingUtilities
111 .getAliasedEscapedColumnName(introspectedColumn));
112 sb.append(" = ");
113 sb.append(MyBatis3FormattingUtilities
114 .getParameterClause(introspectedColumn));
115 answer.addElement(new TextElement(sb.toString()));
116 }
117
118 if (context.getPlugins().sqlMapSelectByPrimaryKeyElementGenerated(
119 answer, introspectedTable)) {
120 parentElement.addElement(answer);
121 }
122 }
123 }