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 org.mybatis.generator.api.dom.xml.Attribute;
21 import org.mybatis.generator.api.dom.xml.TextElement;
22 import org.mybatis.generator.api.dom.xml.XmlElement;
23
24 public class SimpleSelectByPrimaryKeyElementGenerator extends AbstractXmlElementGenerator {
25
26 public SimpleSelectByPrimaryKeyElementGenerator() {
27 super();
28 }
29
30 @Override
31 public void addElements(XmlElement parentElement) {
32 XmlElement answer = new XmlElement("select");
33
34 answer.addAttribute(new Attribute(
35 "id", introspectedTable.getSelectByPrimaryKeyStatementId()));
36 answer.addAttribute(new Attribute("resultMap",
37 introspectedTable.getBaseResultMapId()));
38
39 String parameterType;
40
41
42 if (introspectedTable.getPrimaryKeyColumns().size() > 1) {
43 parameterType = "map";
44 } else {
45 parameterType = introspectedTable.getPrimaryKeyColumns().get(0)
46 .getFullyQualifiedJavaType().toString();
47 }
48
49 answer.addAttribute(new Attribute("parameterType", parameterType));
50
51 context.getCommentGenerator().addComment(answer);
52
53 StringBuilder sb = new StringBuilder();
54 sb.append("select ");
55
56 if (stringHasValue(introspectedTable.getSelectByPrimaryKeyQueryId())) {
57 sb.append('\'');
58 sb.append(introspectedTable.getSelectByPrimaryKeyQueryId());
59 sb.append("' as QUERYID,");
60 }
61
62 buildSelectList(sb.toString(), introspectedTable.getAllColumns()).forEach(answer::addElement);
63
64 sb.setLength(0);
65 sb.append("from ");
66 sb.append(introspectedTable.getAliasedFullyQualifiedTableNameAtRuntime());
67 answer.addElement(new TextElement(sb.toString()));
68
69 buildPrimaryKeyWhereClause().forEach(answer::addElement);
70
71 if (context.getPlugins().sqlMapSelectByPrimaryKeyElementGenerated(answer, introspectedTable)) {
72 parentElement.addElement(answer);
73 }
74 }
75 }