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 SelectByPrimaryKeyElementGenerator extends AbstractXmlElementGenerator {
25
26 public SelectByPrimaryKeyElementGenerator() {
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 if (introspectedTable.getRules().generateResultMapWithBLOBs()) {
37 answer.addAttribute(new Attribute("resultMap",
38 introspectedTable.getResultMapWithBLOBsId()));
39 } else {
40 answer.addAttribute(new Attribute("resultMap",
41 introspectedTable.getBaseResultMapId()));
42 }
43
44 String parameterType;
45 if (introspectedTable.getRules().generatePrimaryKeyClass()) {
46 parameterType = introspectedTable.getPrimaryKeyType();
47 } else {
48
49
50 if (introspectedTable.getPrimaryKeyColumns().size() > 1) {
51 parameterType = "map";
52 } else {
53 parameterType = introspectedTable.getPrimaryKeyColumns().get(0).getFullyQualifiedJavaType().toString();
54 }
55 }
56
57 answer.addAttribute(new Attribute("parameterType", parameterType));
58
59 context.getCommentGenerator().addComment(answer);
60
61 StringBuilder sb = new StringBuilder();
62 sb.append("select ");
63
64 if (stringHasValue(introspectedTable.getSelectByPrimaryKeyQueryId())) {
65 sb.append('\'');
66 sb.append(introspectedTable.getSelectByPrimaryKeyQueryId());
67 sb.append("' as QUERYID,");
68 }
69 answer.addElement(new TextElement(sb.toString()));
70 answer.addElement(getBaseColumnListElement());
71 if (introspectedTable.hasBLOBColumns()) {
72 answer.addElement(new TextElement(","));
73 answer.addElement(getBlobColumnListElement());
74 }
75
76 sb.setLength(0);
77 sb.append("from ");
78 sb.append(introspectedTable.getAliasedFullyQualifiedTableNameAtRuntime());
79 answer.addElement(new TextElement(sb.toString()));
80
81 buildPrimaryKeyWhereClause().forEach(answer::addElement);
82
83 if (context.getPlugins().sqlMapSelectByPrimaryKeyElementGenerated(answer, introspectedTable)) {
84 parentElement.addElement(answer);
85 }
86 }
87 }