1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.mybatis.generator.codegen.mybatis3.xmlmapper;
17
18 import static org.mybatis.generator.internal.util.messages.Messages.getString;
19
20 import org.mybatis.generator.api.FullyQualifiedTable;
21 import org.mybatis.generator.api.dom.xml.Attribute;
22 import org.mybatis.generator.api.dom.xml.Document;
23 import org.mybatis.generator.api.dom.xml.XmlElement;
24 import org.mybatis.generator.codegen.AbstractXmlGenerator;
25 import org.mybatis.generator.codegen.XmlConstants;
26 import org.mybatis.generator.codegen.mybatis3.xmlmapper.elements.AbstractXmlElementGenerator;
27 import org.mybatis.generator.codegen.mybatis3.xmlmapper.elements.DeleteByPrimaryKeyElementGenerator;
28 import org.mybatis.generator.codegen.mybatis3.xmlmapper.elements.InsertElementGenerator;
29 import org.mybatis.generator.codegen.mybatis3.xmlmapper.elements.ResultMapWithoutBLOBsElementGenerator;
30 import org.mybatis.generator.codegen.mybatis3.xmlmapper.elements.SimpleSelectAllElementGenerator;
31 import org.mybatis.generator.codegen.mybatis3.xmlmapper.elements.SimpleSelectByPrimaryKeyElementGenerator;
32 import org.mybatis.generator.codegen.mybatis3.xmlmapper.elements.UpdateByPrimaryKeyWithoutBLOBsElementGenerator;
33
34
35
36
37
38
39 public class SimpleXMLMapperGenerator extends AbstractXmlGenerator {
40
41 public SimpleXMLMapperGenerator() {
42 super();
43 }
44
45 protected XmlElement getSqlMapElement() {
46 FullyQualifiedTable table = introspectedTable.getFullyQualifiedTable();
47 progressCallback.startTask(getString("Progress.12", table.toString()));
48 XmlElement answer = new XmlElement("mapper");
49 String namespace = introspectedTable.getMyBatis3SqlMapNamespace();
50 answer.addAttribute(new Attribute("namespace",
51 namespace));
52
53 context.getCommentGenerator().addRootComment(answer);
54
55 addResultMapElement(answer);
56 addDeleteByPrimaryKeyElement(answer);
57 addInsertElement(answer);
58 addUpdateByPrimaryKeyElement(answer);
59 addSelectByPrimaryKeyElement(answer);
60 addSelectAllElement(answer);
61
62 return answer;
63 }
64
65 protected void addResultMapElement(XmlElement parentElement) {
66 if (introspectedTable.getRules().generateBaseResultMap()) {
67 AbstractXmlElementGenerator elementGenerator = new ResultMapWithoutBLOBsElementGenerator(
68 true);
69 initializeAndExecuteGenerator(elementGenerator, parentElement);
70 }
71 }
72
73 protected void addSelectByPrimaryKeyElement(XmlElement parentElement) {
74 if (introspectedTable.getRules().generateSelectByPrimaryKey()) {
75 AbstractXmlElementGenerator elementGenerator = new SimpleSelectByPrimaryKeyElementGenerator();
76 initializeAndExecuteGenerator(elementGenerator, parentElement);
77 }
78 }
79
80 protected void addSelectAllElement(XmlElement parentElement) {
81 AbstractXmlElementGenerator elementGenerator = new SimpleSelectAllElementGenerator();
82 initializeAndExecuteGenerator(elementGenerator, parentElement);
83 }
84
85 protected void addDeleteByPrimaryKeyElement(XmlElement parentElement) {
86 if (introspectedTable.getRules().generateDeleteByPrimaryKey()) {
87 AbstractXmlElementGenerator elementGenerator = new DeleteByPrimaryKeyElementGenerator(true);
88 initializeAndExecuteGenerator(elementGenerator, parentElement);
89 }
90 }
91
92 protected void addInsertElement(XmlElement parentElement) {
93 if (introspectedTable.getRules().generateInsert()) {
94 AbstractXmlElementGenerator elementGenerator = new InsertElementGenerator(true);
95 initializeAndExecuteGenerator(elementGenerator, parentElement);
96 }
97 }
98
99 protected void addUpdateByPrimaryKeyElement(XmlElement parentElement) {
100 if (introspectedTable.getRules().generateUpdateByPrimaryKeySelective()) {
101 AbstractXmlElementGenerator elementGenerator = new UpdateByPrimaryKeyWithoutBLOBsElementGenerator(
102 true);
103 initializeAndExecuteGenerator(elementGenerator, parentElement);
104 }
105 }
106
107 protected void initializeAndExecuteGenerator(
108 AbstractXmlElementGenerator elementGenerator,
109 XmlElement parentElement) {
110 elementGenerator.setContext(context);
111 elementGenerator.setIntrospectedTable(introspectedTable);
112 elementGenerator.setProgressCallback(progressCallback);
113 elementGenerator.setWarnings(warnings);
114 elementGenerator.addElements(parentElement);
115 }
116
117 @Override
118 public Document getDocument() {
119 Document document = new Document(
120 XmlConstants.MYBATIS3_MAPPER_PUBLIC_ID,
121 XmlConstants.MYBATIS3_MAPPER_SYSTEM_ID);
122 document.setRootElement(getSqlMapElement());
123
124 if (!context.getPlugins().sqlMapDocumentGenerated(document,
125 introspectedTable)) {
126 document = null;
127 }
128
129 return document;
130 }
131 }