1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.mybatis.generator.codegen.ibatis2.sqlmap.elements;
17
18 import static org.mybatis.generator.internal.util.StringUtility.stringHasValue;
19
20 import org.mybatis.generator.api.IntrospectedColumn;
21 import org.mybatis.generator.api.dom.xml.Attribute;
22 import org.mybatis.generator.api.dom.xml.TextElement;
23 import org.mybatis.generator.api.dom.xml.XmlElement;
24 import org.mybatis.generator.codegen.ibatis2.Ibatis2FormattingUtilities;
25
26
27
28
29
30
31 public class SelectByPrimaryKeyElementGenerator extends
32 AbstractXmlElementGenerator {
33
34 public SelectByPrimaryKeyElementGenerator() {
35 super();
36 }
37
38 @Override
39 public void addElements(XmlElement parentElement) {
40 XmlElement answer = new XmlElement("select");
41
42 answer.addAttribute(new Attribute(
43 "id", introspectedTable.getSelectByPrimaryKeyStatementId()));
44 if (introspectedTable.getRules().generateResultMapWithBLOBs()) {
45 answer.addAttribute(new Attribute("resultMap",
46 introspectedTable.getResultMapWithBLOBsId()));
47 } else {
48 answer.addAttribute(new Attribute("resultMap",
49 introspectedTable.getBaseResultMapId()));
50 }
51
52 String parameterType;
53 if (introspectedTable.getRules().generatePrimaryKeyClass()) {
54 parameterType = introspectedTable.getPrimaryKeyType();
55 } else {
56
57
58 parameterType = introspectedTable.getBaseRecordType();
59 }
60
61 answer.addAttribute(new Attribute("parameterClass",
62 parameterType));
63
64 context.getCommentGenerator().addComment(answer);
65
66 StringBuilder sb = new StringBuilder();
67 sb.append("select ");
68
69 if (stringHasValue(introspectedTable
70 .getSelectByPrimaryKeyQueryId())) {
71 sb.append('\'');
72 sb.append(introspectedTable.getSelectByPrimaryKeyQueryId());
73 sb.append("' as QUERYID,");
74 }
75 answer.addElement(new TextElement(sb.toString()));
76 answer.addElement(getBaseColumnListElement());
77 if (introspectedTable.hasBLOBColumns()) {
78 answer.addElement(new TextElement(","));
79 answer.addElement(getBlobColumnListElement());
80 }
81
82 sb.setLength(0);
83 sb.append("from ");
84 sb.append(introspectedTable
85 .getAliasedFullyQualifiedTableNameAtRuntime());
86 answer.addElement(new TextElement(sb.toString()));
87
88 boolean and = false;
89 for (IntrospectedColumn introspectedColumn : introspectedTable
90 .getPrimaryKeyColumns()) {
91 sb.setLength(0);
92 if (and) {
93 sb.append(" and ");
94 } else {
95 sb.append("where ");
96 and = true;
97 }
98
99 sb.append(Ibatis2FormattingUtilities
100 .getAliasedEscapedColumnName(introspectedColumn));
101 sb.append(" = ");
102 sb.append(Ibatis2FormattingUtilities
103 .getParameterClause(introspectedColumn));
104 answer.addElement(new TextElement(sb.toString()));
105 }
106
107 if (context.getPlugins()
108 .sqlMapSelectByPrimaryKeyElementGenerated(answer,
109 introspectedTable)) {
110 parentElement.addElement(answer);
111 }
112 }
113 }