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 org.mybatis.generator.api.IntrospectedColumn;
19 import org.mybatis.generator.api.dom.xml.Attribute;
20 import org.mybatis.generator.api.dom.xml.TextElement;
21 import org.mybatis.generator.api.dom.xml.XmlElement;
22 import org.mybatis.generator.codegen.mybatis3.MyBatis3FormattingUtilities;
23
24
25
26
27
28
29 public class DeleteByPrimaryKeyElementGenerator extends
30 AbstractXmlElementGenerator {
31
32 private boolean isSimple;
33
34 public DeleteByPrimaryKeyElementGenerator(boolean isSimple) {
35 super();
36 this.isSimple = isSimple;
37 }
38
39 @Override
40 public void addElements(XmlElement parentElement) {
41 XmlElement answer = new XmlElement("delete");
42
43 answer.addAttribute(new Attribute(
44 "id", introspectedTable.getDeleteByPrimaryKeyStatementId()));
45 String parameterClass;
46 if (!isSimple && introspectedTable.getRules().generatePrimaryKeyClass()) {
47 parameterClass = introspectedTable.getPrimaryKeyType();
48 } else {
49
50
51 if (introspectedTable.getPrimaryKeyColumns().size() > 1) {
52 parameterClass = "map";
53 } else {
54 parameterClass = introspectedTable.getPrimaryKeyColumns()
55 .get(0).getFullyQualifiedJavaType().toString();
56 }
57 }
58 answer.addAttribute(new Attribute("parameterType",
59 parameterClass));
60
61 context.getCommentGenerator().addComment(answer);
62
63 StringBuilder sb = new StringBuilder();
64 sb.append("delete from ");
65 sb.append(introspectedTable.getFullyQualifiedTableNameAtRuntime());
66 answer.addElement(new TextElement(sb.toString()));
67
68 boolean and = false;
69 for (IntrospectedColumn introspectedColumn : introspectedTable
70 .getPrimaryKeyColumns()) {
71 sb.setLength(0);
72 if (and) {
73 sb.append(" and ");
74 } else {
75 sb.append("where ");
76 and = true;
77 }
78
79 sb.append(MyBatis3FormattingUtilities
80 .getEscapedColumnName(introspectedColumn));
81 sb.append(" = ");
82 sb.append(MyBatis3FormattingUtilities
83 .getParameterClause(introspectedColumn));
84 answer.addElement(new TextElement(sb.toString()));
85 }
86
87 if (context.getPlugins()
88 .sqlMapDeleteByPrimaryKeyElementGenerated(answer,
89 introspectedTable)) {
90 parentElement.addElement(answer);
91 }
92 }
93 }