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.isTrue;
19 import static org.mybatis.generator.internal.util.StringUtility.stringHasValue;
20
21 import org.mybatis.generator.api.IntrospectedColumn;
22 import org.mybatis.generator.api.dom.xml.Attribute;
23 import org.mybatis.generator.api.dom.xml.XmlElement;
24 import org.mybatis.generator.codegen.ibatis2.Ibatis2FormattingUtilities;
25 import org.mybatis.generator.config.PropertyRegistry;
26
27
28
29
30
31
32 public class ResultMapWithBLOBsElementGenerator extends
33 AbstractXmlElementGenerator {
34
35 public ResultMapWithBLOBsElementGenerator() {
36 super();
37 }
38
39 @Override
40 public void addElements(XmlElement parentElement) {
41 boolean useColumnIndex = isTrue(introspectedTable
42 .getTableConfigurationProperty(PropertyRegistry.TABLE_USE_COLUMN_INDEXES));
43
44 XmlElement answer = new XmlElement("resultMap");
45
46 answer.addAttribute(new Attribute("id",
47 introspectedTable.getResultMapWithBLOBsId()));
48
49 String returnType;
50 if (introspectedTable.getRules().generateRecordWithBLOBsClass()) {
51 returnType = introspectedTable.getRecordWithBLOBsType();
52 } else {
53
54
55 returnType = introspectedTable.getBaseRecordType();
56 }
57
58 answer.addAttribute(new Attribute("class",
59 returnType));
60
61 StringBuilder sb = new StringBuilder();
62 sb.append(introspectedTable.getIbatis2SqlMapNamespace());
63 sb.append('.');
64 sb.append(introspectedTable.getBaseResultMapId());
65 answer.addAttribute(new Attribute("extends", sb.toString()));
66
67 context.getCommentGenerator().addComment(answer);
68
69 int i = introspectedTable.getNonBLOBColumnCount() + 1;
70 if (stringHasValue(introspectedTable
71 .getSelectByPrimaryKeyQueryId())
72 || stringHasValue(introspectedTable
73 .getSelectByExampleQueryId())) {
74 i++;
75 }
76
77 for (IntrospectedColumn introspectedColumn : introspectedTable
78 .getBLOBColumns()) {
79 XmlElement resultElement = new XmlElement("result");
80
81 if (useColumnIndex) {
82 resultElement.addAttribute(new Attribute(
83 "columnIndex", Integer.toString(i++)));
84 } else {
85 resultElement
86 .addAttribute(new Attribute(
87 "column", Ibatis2FormattingUtilities.getRenamedColumnNameForResultMap(introspectedColumn)));
88 }
89 resultElement.addAttribute(new Attribute(
90 "property", introspectedColumn.getJavaProperty()));
91 resultElement.addAttribute(new Attribute(
92 "jdbcType", introspectedColumn.getJdbcTypeName()));
93
94 if (stringHasValue(introspectedColumn
95 .getTypeHandler())) {
96 resultElement.addAttribute(new Attribute(
97 "typeHandler", introspectedColumn.getTypeHandler()));
98 }
99
100 answer.addElement(resultElement);
101 }
102
103 if (context.getPlugins()
104 .sqlMapResultMapWithBLOBsElementGenerated(answer,
105 introspectedTable)) {
106 parentElement.addElement(answer);
107 }
108 }
109 }