My favorites | Sign in
Project Home Downloads Issues Source
Checkout   Browse   Changes  
Changes to /sub-projects/generator/trunk/core/mybatis-generator-core/src/site/xhtml/whatsNew.xhtml
r5405 vs. r5433 Compare: vs.  Format:
Revision r5433
Go to: 
/sub-projects/generator/trunk/core/mybatis-generator-core/src/site/xhtml/whatsNew.xhtml   r5405 /sub-projects/generator/trunk/core/mybatis-generator-core/src/site/xhtml/whatsNew.xhtml   r5433
1 <?xml version="1.0" encoding="UTF-8"?> 1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
3 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 3 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 4 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
5 <head> 5 <head>
6 <title>What's New in MyBatis Generator</title> 6 <title>What's New in MyBatis Generator</title>
7 <link rel="stylesheet" type="text/css" href="mbgstyle.css" /> 7 <link rel="stylesheet" type="text/css" href="mbgstyle.css" />
8 </head> 8 </head>
9 <body> 9 <body>
10 <h1>What's New in MyBatis Generator</h1> 10 <h1>What's New in MyBatis Generator</h1>
11 <h2>Version 1.3.3</h2> 11 <h2>Version 1.3.3</h2>
12 <h3>Announcements</h3>
13 <ul>
14 <li>MyBatis Generator now requires JRE 1.6 or greater</li>
15 </ul>
16 <h3>Enhancements</h3>
17 <ul>
18 <li>Changed the annotated provider generators to use the new SQL builder class from MyBatis 3.2.
19 If you must run on an older version of MyBatis, set the property "useLegacyBuilder"
20 to "true" on your &lt;JavaClientGenerator&gt; configuration.
21 </li>
22 </ul>
12 <h3>Bugs Fixed</h3> 23 <h3>Bugs Fixed</h3>
13 <ul> 24 <ul>
14 <li>Fixed issue #648 - Missing imports when using constructor based models</li> 25 <li>Fixed issue #648 - Missing imports when using constructor based models</li>
15 </ul> 26 </ul>
16
17 <h2>Version 1.3.2</h2> 27 <h2>Version 1.3.2</h2>
18 <h3>Bugs Fixed</h3> 28 <h3>Bugs Fixed</h3>
19 <ul> 29 <ul>
20 <li>Add comments to generated constructors in the model classes 30 <li>Add comments to generated constructors in the model classes
21 so they can be merged.</li> 31 so they can be merged.</li>
22 <li>Support package names with Uppercase elements.</li> 32 <li>Support package names with Uppercase elements.</li>
23 <li>Fixed issue #288 - Incorrect annotated countByExample method</li> 33 <li>Fixed issue #288 - Incorrect annotated countByExample method</li>
24 <li>Fixed the Maven plugin so &lt;properties&gt; files can be found 34 <li>Fixed the Maven plugin so &lt;properties&gt; files can be found
25 in the project classpath.</li> 35 in the project classpath.</li>
26 <li>Fixed issue #359 - make JdbcTypeInformation public</li> 36 <li>Fixed issue #359 - make JdbcTypeInformation public</li>
27 <li>Fixed Context.toXmlElement() method to include missing attributes</li> 37 <li>Fixed Context.toXmlElement() method to include missing attributes</li>
28 <li>Fixed CaseInsensitiveLikePlugin to add new methods to GeneratedCriteria inner class</li> 38 <li>Fixed CaseInsensitiveLikePlugin to add new methods to GeneratedCriteria inner class</li>
29 <li>Issue #412 - update the documentation to reflect the difference in MyBatis3 regarding 39 <li>Issue #412 - update the documentation to reflect the difference in MyBatis3 regarding
30 generated keys.</li> 40 generated keys.</li>
31 <li>Issue #440 - incorrect code generated for primitives with type handlers</li> 41 <li>Issue #440 - incorrect code generated for primitives with type handlers</li>
32 <li>Issue #439 - use auto boxing for primitives when appropriate</li> 42 <li>Issue #439 - use auto boxing for primitives when appropriate</li>
33 <li>Issue #438 - keep primary key properties in database sequence</li> 43 <li>Issue #438 - keep primary key properties in database sequence</li>
34 <li>Issue #507 - RowBounds plugin generates duplicate statements</li> 44 <li>Issue #507 - RowBounds plugin generates duplicate statements</li>
35 <li>Issue #593 - CaseInsensitiveLikePlugin skipped Jdbc4 National Character Types</li> 45 <li>Issue #593 - CaseInsensitiveLikePlugin skipped Jdbc4 National Character Types</li>
36 </ul> 46 </ul>
37 <h3>Enhancements</h3> 47 <h3>Enhancements</h3>
38 <ul> 48 <ul>
39 <li>Added a new target runtime - MyBatis3Simple - that can be used to generate 49 <li>Added a new target runtime - MyBatis3Simple - that can be used to generate
40 very simple CRUD operations on tables. This runtime produces far simpler 50 very simple CRUD operations on tables. This runtime produces far simpler
41 MyBatis code than the normal MyBatis3 runtime. The produced code also has 51 MyBatis code than the normal MyBatis3 runtime. The produced code also has
42 lower functionality that the normal MyBatis3 runtime. If you do not 52 lower functionality that the normal MyBatis3 runtime. If you do not
43 regularly use the "by example" methods, then the code produced by the 53 regularly use the "by example" methods, then the code produced by the
44 MyBatis3Siple runtime may be more suitable to your project.</li> 54 MyBatis3Siple runtime may be more suitable to your project.</li>
45 <li>Added a new plugin - VirtualPrimaryKey plugin - that can be used to specify 55 <li>Added a new plugin - VirtualPrimaryKey plugin - that can be used to specify
46 columns that act as a primary key, even if they are not defined as 56 columns that act as a primary key, even if they are not defined as
47 primary keys in the database.</li> 57 primary keys in the database.</li>
48 <li>Issue #328 - Added a new plugin - RowBounds plugin - that will generate an additional 58 <li>Issue #328 - Added a new plugin - RowBounds plugin - that will generate an additional
49 version of <code>selectByExample</code> that supports the MyBatis RowBounds 59 version of <code>selectByExample</code> that supports the MyBatis RowBounds
50 function.</li> 60 function.</li>
51 <li>Created a new reference page for supplied plugins: 61 <li>Created a new reference page for supplied plugins:
52 <a href="reference/plugins.html">Supplied Plugins</a></li> 62 <a href="reference/plugins.html">Supplied Plugins</a></li>
53 <li>Issue #368 - Allowed for generation of Java Model only. If no SQLMapGenerator 63 <li>Issue #368 - Allowed for generation of Java Model only. If no SQLMapGenerator
54 or JavaClientGenerator is specified in a context, then only a Java Model is generated. 64 or JavaClientGenerator is specified in a context, then only a Java Model is generated.
55 Also, if property "modelOnly" is set to "true" on a &lt;table&gt; element, then 65 Also, if property "modelOnly" is set to "true" on a &lt;table&gt; element, then
56 only model object and, possibly XML result maps, will be generated. 66 only model object and, possibly XML result maps, will be generated.
57 </li> 67 </li>
58 <li>Issue #374 - Allow for specification of a file encoding for reading/writing 68 <li>Issue #374 - Allow for specification of a file encoding for reading/writing
59 Java files on the file system. There is a new property "javaFileEncoding" on the 69 Java files on the file system. There is a new property "javaFileEncoding" on the
60 &lt;context&gt; element that can be used to specify a Java file encoding. (XML files 70 &lt;context&gt; element that can be used to specify a Java file encoding. (XML files
61 are always read/written in UTF-8 per the spec). 71 are always read/written in UTF-8 per the spec).
62 </li> 72 </li>
63 <li>Added the ability to specify custom code formatters for generated Java and XML files. 73 <li>Added the ability to specify custom code formatters for generated Java and XML files.
64 See new properties on the &lt;context&gt; element for more information. 74 See new properties on the &lt;context&gt; element for more information.
65 </li> 75 </li>
66 <li>Added support for varargs to <code>org.mybatis.generator.api.dom.java.Parameter</code> 76 <li>Added support for varargs to <code>org.mybatis.generator.api.dom.java.Parameter</code>
67 class 77 class
68 </li> 78 </li>
69 <li>Added support for <code>synchronized</code> and <code>native</code> to 79 <li>Added support for <code>synchronized</code> and <code>native</code> to
70 <code>org.mybatis.generator.api.dom.java.Method</code> class 80 <code>org.mybatis.generator.api.dom.java.Method</code> class
71 </li> 81 </li>
72 <li>Added support for <code>transient</code> and <code>volatile</code> to 82 <li>Added support for <code>transient</code> and <code>volatile</code> to
73 <code>org.mybatis.generator.api.dom.java.Field</code> class 83 <code>org.mybatis.generator.api.dom.java.Field</code> class
74 </li> 84 </li>
75 <li>Issue #375 - Added a new plugin - ToStringPlugin - that will generate a toString() method 85 <li>Issue #375 - Added a new plugin - ToStringPlugin - that will generate a toString() method
76 in the model classes. Thanks Alexei and Iwao!</li> 86 in the model classes. Thanks Alexei and Iwao!</li>
77 <li>Issue #233 - added GWT capability to the Serializable plugin</li> 87 <li>Issue #233 - added GWT capability to the Serializable plugin</li>
78 <li>Issue #564 - support subpackages at the table level</li> 88 <li>Issue #564 - support subpackages at the table level</li>
79 <li>Issue #590 - new plugin for &lt;cache&gt;. Thanks Jason Bennett! </li> 89 <li>Issue #590 - new plugin for &lt;cache&gt;. Thanks Jason Bennett! </li>
80 </ul> 90 </ul>
81 91
82 <h2>Version 1.3.1</h2> 92 <h2>Version 1.3.1</h2>
83 <h3>Bugs Fixed</h3> 93 <h3>Bugs Fixed</h3>
84 <ul> 94 <ul>
85 <li>Always specify &lt;selectKey&gt; order for MyBatis3 - position within 95 <li>Always specify &lt;selectKey&gt; order for MyBatis3 - position within
86 the &lt;insert&gt; is not relevant.</li> 96 the &lt;insert&gt; is not relevant.</li>
87 <li>"rootInterface" was ignored for XMLMAPPER clients</li> 97 <li>"rootInterface" was ignored for XMLMAPPER clients</li>
88 <li>Fixed bug when a lower case class name is specified as a domain object name</li> 98 <li>Fixed bug when a lower case class name is specified as a domain object name</li>
89 <li>Fixed issue #174 - incorrect format of order by clause in 99 <li>Fixed issue #174 - incorrect format of order by clause in
90 selectByExampleWithBlobs</li> 100 selectByExampleWithBlobs</li>
91 </ul> 101 </ul>
92 <h3>Enhancements</h3> 102 <h3>Enhancements</h3>
93 <ul> 103 <ul>
94 <li>Added a new MyBatis3 generator that generates code based solely on annotations 104 <li>Added a new MyBatis3 generator that generates code based solely on annotations
95 with no generated XML. Configuration settings for this new generator are as follows: 105 with no generated XML. Configuration settings for this new generator are as follows:
96 <ul> 106 <ul>
97 <li>The <code>targetRuntime</code> attribute of 107 <li>The <code>targetRuntime</code> attribute of
98 <a href="configreference/context.html">&lt;context&gt;</a> 108 <a href="configreference/context.html">&lt;context&gt;</a>
99 element is <b>MyBatis3</b></li> 109 element is <b>MyBatis3</b></li>
100 <li>The <code>type</code> attribute of 110 <li>The <code>type</code> attribute of
101 <a href="configreference/javaClientGenerator.html">&lt;javaClientGenerator&gt;</a> 111 <a href="configreference/javaClientGenerator.html">&lt;javaClientGenerator&gt;</a>
102 element is <b>ANNOTATEDMAPPER</b></li> 112 element is <b>ANNOTATEDMAPPER</b></li>
103 </ul> 113 </ul>
104 </li> 114 </li>
105 <li>Added a new MyBatis3 generator that generates code based on a mix of annotations 115 <li>Added a new MyBatis3 generator that generates code based on a mix of annotations
106 and generated XML. Configuration settings for this new generator are as follows: 116 and generated XML. Configuration settings for this new generator are as follows:
107 <ul> 117 <ul>
108 <li>The <code>targetRuntime</code> attribute of 118 <li>The <code>targetRuntime</code> attribute of
109 <a href="configreference/context.html">&lt;context&gt;</a> 119 <a href="configreference/context.html">&lt;context&gt;</a>
110 element is <b>MyBatis3</b></li> 120 element is <b>MyBatis3</b></li>
111 <li>The <code>type</code> attribute of 121 <li>The <code>type</code> attribute of
112 <a href="configreference/javaClientGenerator.html">&lt;javaClientGenerator&gt;</a> 122 <a href="configreference/javaClientGenerator.html">&lt;javaClientGenerator&gt;</a>
113 element is <b>MIXEDMAPPER</b></li> 123 element is <b>MIXEDMAPPER</b></li>
114 </ul> 124 </ul>
115 </li> 125 </li>
116 <li>Add support for JDBC types NCHAR, NCLOB, NVARCHAR to match MyBatis3.</li> 126 <li>Add support for JDBC types NCHAR, NCLOB, NVARCHAR to match MyBatis3.</li>
117 <li>Added support for "useGeneratedKeys" in MyBatis3. See 127 <li>Added support for "useGeneratedKeys" in MyBatis3. See
118 <a href="configreference/generatedKey.html">&lt;generatedKey&gt;</a> 128 <a href="configreference/generatedKey.html">&lt;generatedKey&gt;</a>
119 for details. 129 for details.
120 </li> 130 </li>
121 <li>Added support for immutable objects and constructor based result maps in 131 <li>Added support for immutable objects and constructor based result maps in
122 MyBatis3. See <a href="configreference/table.html">&lt;table&gt;</a> 132 MyBatis3. See <a href="configreference/table.html">&lt;table&gt;</a>
123 and/or <a href="configreference/javaModelGenerator.html">&lt;javaModelGenerator&gt;</a> 133 and/or <a href="configreference/javaModelGenerator.html">&lt;javaModelGenerator&gt;</a>
124 for details. 134 for details.
125 </li> 135 </li>
126 <li>Added support for initialization blocks in the Java DOM</li> 136 <li>Added support for initialization blocks in the Java DOM</li>
127 <li>Issue #214 - Added the ability to supress all comments in generated code. See 137 <li>Issue #214 - Added the ability to supress all comments in generated code. See
128 <a href="configreference/commentGenerator.html">&lt;commentGenerator&gt;</a> 138 <a href="configreference/commentGenerator.html">&lt;commentGenerator&gt;</a>
129 for details. 139 for details.
130 </li> 140 </li>
131 </ul> 141 </ul>
132 142
133 143
134 <h2>Version 1.3.0</h2> 144 <h2>Version 1.3.0</h2>
135 <ol> 145 <ol>
136 <li>Moved to mybatis.org, renamed MyBatis Generator</li> 146 <li>Moved to mybatis.org, renamed MyBatis Generator</li>
137 <li>MyBatis generator will continue to support XML configuration files 147 <li>MyBatis generator will continue to support XML configuration files
138 from Ibator. However, any new features will only be implemented in 148 from Ibator. However, any new features will only be implemented in
139 MyBatis formatted configuration files. Some minimal changes are required to 149 MyBatis formatted configuration files. Some minimal changes are required to
140 migrate Ibator formatted configuration files to the new DTD for MyBatis Generator.</li> 150 migrate Ibator formatted configuration files to the new DTD for MyBatis Generator.</li>
141 <li>Configuration settings for MyBatis 3 are as follows: 151 <li>Configuration settings for MyBatis 3 are as follows:
142 <ol type="a"> 152 <ol type="a">
143 <li>The <code>targetRuntime</code> attribute of 153 <li>The <code>targetRuntime</code> attribute of
144 <a href="configreference/context.html">&lt;context&gt;</a> 154 <a href="configreference/context.html">&lt;context&gt;</a>
145 element must be changed to <b>MyBatis3</b></li> 155 element must be changed to <b>MyBatis3</b></li>
146 <li>The <code>type</code> attribute of 156 <li>The <code>type</code> attribute of
147 <a href="configreference/javaClientGenerator.html">&lt;javaClientGenerator&gt;</a> 157 <a href="configreference/javaClientGenerator.html">&lt;javaClientGenerator&gt;</a>
148 element must be changed to <b>XMLMAPPER</b></li> 158 element must be changed to <b>XMLMAPPER</b></li>
149 </ol> 159 </ol>
150 </li> 160 </li>
151 <li>Removed support for <code>suppressTypeWarnings</code> property in the 161 <li>Removed support for <code>suppressTypeWarnings</code> property in the
152 <code>&lt;context&gt;</code> element. This confusing property has become 162 <code>&lt;context&gt;</code> element. This confusing property has become
153 unmanagable due to confusion between @SuppressWarnings("unchecked") and 163 unmanagable due to confusion between @SuppressWarnings("unchecked") and
154 @SuppressWarnings("rawtypes") in the different compilers. This was only used 164 @SuppressWarnings("rawtypes") in the different compilers. This was only used
155 in the corner case where code generated with Ibatis2Java2 targetRuntime was to be compiled 165 in the corner case where code generated with Ibatis2Java2 targetRuntime was to be compiled
156 with a JSE 5.0 compiler.</li> 166 with a JSE 5.0 compiler.</li>
157 </ol> 167 </ol>
158 168
159 <h2>Version 1.2.2 (Never Released)</h2> 169 <h2>Version 1.2.2 (Never Released)</h2>
160 <h3>Announcements</h3> 170 <h3>Announcements</h3>
161 <ul> 171 <ul>
162 <li>The <code>org.apache.ibatis.ibator.api.CommentGenerator</code> interface 172 <li>The <code>org.apache.ibatis.ibator.api.CommentGenerator</code> interface
163 has changed. Classes that implement this interface <b>must be changed</b>. With 173 has changed. Classes that implement this interface <b>must be changed</b>. With
164 this change, implementing classes have access to many more data elements 174 this change, implementing classes have access to many more data elements
165 from which to generate comments. Additionally, this change makes the comment 175 from which to generate comments. Additionally, this change makes the comment
166 generator interface more consistent with the other public Ibator interfaces. 176 generator interface more consistent with the other public Ibator interfaces.
167 Details of the change follow: 177 Details of the change follow:
168 <ul> 178 <ul>
169 <li>Methods which accepted the parameter <code>FullyQualifiedTable</code> 179 <li>Methods which accepted the parameter <code>FullyQualifiedTable</code>
170 now accept the parameter <code>IntrospectedTable</code> instead. 180 now accept the parameter <code>IntrospectedTable</code> instead.
171 The <code>FullyQualifiedTable</code> instance is available through 181 The <code>FullyQualifiedTable</code> instance is available through
172 the method <code>IntrospectedTable.getFullyQualifiedTable()</code>. 182 the method <code>IntrospectedTable.getFullyQualifiedTable()</code>.
173 </li> 183 </li>
174 <li>Methods which accepted the <code>String</code> parameter <code>columnName</code> 184 <li>Methods which accepted the <code>String</code> parameter <code>columnName</code>
175 now accept the parameter <code>IntrospectedColumn</code> instead. 185 now accept the parameter <code>IntrospectedColumn</code> instead.
176 The column name is available through 186 The column name is available through
177 the method <code>IntrospectedColumn.getActualColumnName()</code>. 187 the method <code>IntrospectedColumn.getActualColumnName()</code>.
178 </li> 188 </li>
179 </ul> 189 </ul>
180 <p><b>Important Note:</b> any implementation that subclasses the Ibator 190 <p><b>Important Note:</b> any implementation that subclasses the Ibator
181 supplied class <code>DefaultCommentGenerator</code> does not need to 191 supplied class <code>DefaultCommentGenerator</code> does not need to
182 change immediately with this release. 192 change immediately with this release.
183 The old methods have been deprecated and will be removed with the next 193 The old methods have been deprecated and will be removed with the next
184 release of Ibator - so subclasses should be reworked as soon as 194 release of Ibator - so subclasses should be reworked as soon as
185 convenient.</p> 195 convenient.</p>
186 </li> 196 </li>
187 <li>The SQL Map generator has changed in that it no longer prepends the string 197 <li>The SQL Map generator has changed in that it no longer prepends the string
188 "ibatorgenerated_" to every generated XML id. If you were relying on these 198 "ibatorgenerated_" to every generated XML id. If you were relying on these
189 generated names in other code, you can force Ibator to prepend the string 199 generated names in other code, you can force Ibator to prepend the string
190 with the property <code>useLegacyXMLIds</code> on the 200 with the property <code>useLegacyXMLIds</code> on the
191 <a href="configreference/sqlMapGenerator.html">&lt;SqlMapGenerator&gt;</a> configuration.</li> 201 <a href="configreference/sqlMapGenerator.html">&lt;SqlMapGenerator&gt;</a> configuration.</li>
192 <li>Ibator is now built with Maven and includes a Maven plugin</li> 202 <li>Ibator is now built with Maven and includes a Maven plugin</li>
193 203
194 </ul> 204 </ul>
195 <h3>Bugs Fixed</h3> 205 <h3>Bugs Fixed</h3>
196 <ul> 206 <ul>
197 <li>NPE when no DAOs are generated.</li> 207 <li>NPE when no DAOs are generated.</li>
198 <li>IBATIS-579 - Don't allow column names that contain spaces to 208 <li>IBATIS-579 - Don't allow column names that contain spaces to
199 break across lines in generated XML.</li> 209 break across lines in generated XML.</li>
200 <li>Fixed NPE and incorrect calculation in generated equals method 210 <li>Fixed NPE and incorrect calculation in generated equals method
201 (from EqualsHashCodePlugin) when certain 211 (from EqualsHashCodePlugin) when certain
202 fields are null - thanks to Benjamin Klatt for finding this bug.</li> 212 fields are null - thanks to Benjamin Klatt for finding this bug.</li>
203 <li>IBATIS-601 - improper validation of &lt;generatedKey&gt;</li> 213 <li>IBATIS-601 - improper validation of &lt;generatedKey&gt;</li>
204 <li>IBATIS-609 - incorrect parsing of Java generic types</li> 214 <li>IBATIS-609 - incorrect parsing of Java generic types</li>
205 <li>Fixed spelling error LONCVARCHAR to LONGVARCHAR (thanks Allard)</li> 215 <li>Fixed spelling error LONCVARCHAR to LONGVARCHAR (thanks Allard)</li>
206 <li>Fixed IBATIS-731 - change name of primary key variable to avoid conflicts</li> 216 <li>Fixed IBATIS-731 - change name of primary key variable to avoid conflicts</li>
207 <li>Fixed IBATIS-699 - Overwrite unmergeable XML files if enabled</li> 217 <li>Fixed IBATIS-699 - Overwrite unmergeable XML files if enabled</li>
208 <li>Fixed issue where insertSelective failed if there is a sequence generating the 218 <li>Fixed issue where insertSelective failed if there is a sequence generating the
209 primary key (issue only with iBATIS3)</li> 219 primary key (issue only with iBATIS3)</li>
210 </ul> 220 </ul>
211 221
212 <h3>Enhancements</h3> 222 <h3>Enhancements</h3>
213 <ul> 223 <ul>
214 <li>IBATIS-569 - Modified the IbatorRules implementation to make it easier 224 <li>IBATIS-569 - Modified the IbatorRules implementation to make it easier
215 for plugins to provide custom implementations of IbatorRules. See the 225 for plugins to provide custom implementations of IbatorRules. See the
216 Javadoc for the new class 226 Javadoc for the new class
217 <code>org.apache.ibatis.ibator.internal.rules.IbatorRulesDelegate</code> 227 <code>org.apache.ibatis.ibator.internal.rules.IbatorRulesDelegate</code>
218 for more information.</li> 228 for more information.</li>
219 <li>IBATIS-571 - Added support for automatically delimiting SQL keywords 229 <li>IBATIS-571 - Added support for automatically delimiting SQL keywords
220 if they are used as column names in tables. See the 230 if they are used as column names in tables. See the
221 <a href="configreference/ibatorContext.html">&lt;ibatorContext&gt;</a> page 231 <a href="configreference/ibatorContext.html">&lt;ibatorContext&gt;</a> page
222 for more information.</li> 232 for more information.</li>
223 <li>IBATIS-577 - Define SQL fragments for column lists to improve 233 <li>IBATIS-577 - Define SQL fragments for column lists to improve
224 reusability of generated code. Thanks to Iwao AVE! for the idea 234 reusability of generated code. Thanks to Iwao AVE! for the idea
225 and the initial patch. 235 and the initial patch.
226 </li> 236 </li>
227 <li>Added new <code>-verbose</code> command line argument. See the 237 <li>Added new <code>-verbose</code> command line argument. See the
228 <a href="running.html">Running Ibator</a> page 238 <a href="running.html">Running Ibator</a> page
229 for more information.</li> 239 for more information.</li>
230 <li>Added logging statements for use in debug. See the 240 <li>Added logging statements for use in debug. See the
231 <a href="reference/logging.html">Logging</a> page 241 <a href="reference/logging.html">Logging</a> page
232 for more information.</li> 242 for more information.</li>
233 <li>Added new example plugin to demonstrate adding case insensitive LIKE 243 <li>Added new example plugin to demonstrate adding case insensitive LIKE
234 support to generated Example classes. See the 244 support to generated Example classes. See the
235 <a href="configreference/ibatorPlugin.html">&lt;ibatorPlugin&gt;</a> page 245 <a href="configreference/ibatorPlugin.html">&lt;ibatorPlugin&gt;</a> page
236 for more information.</li> 246 for more information.</li>
237 <li>Added "delimitAllColumns" attribute to table configurations. This supports databases 247 <li>Added "delimitAllColumns" attribute to table configurations. This supports databases
238 like PosgreSQL that are case sensitive for identifiers. See the 248 like PosgreSQL that are case sensitive for identifiers. See the
239 <a href="configreference/table.html">&lt;table&gt;</a> page 249 <a href="configreference/table.html">&lt;table&gt;</a> page
240 for more information.</li> 250 for more information.</li>
241 <li>Added a page explaining how to deal with case sensitivity in PostgreSQL. See the 251 <li>Added a page explaining how to deal with case sensitivity in PostgreSQL. See the
242 <a href="usage/postgresql.html">PostgreSQL</a> page 252 <a href="usage/postgresql.html">PostgreSQL</a> page
243 for more information.</li> 253 for more information.</li>
244 <li>IBATIS-586 - Added the ability to specify nested property elements on columnOverrides. 254 <li>IBATIS-586 - Added the ability to specify nested property elements on columnOverrides.
245 See the <a href="configreference/columnOverride.html">&lt;columnOverride&gt;</a> page 255 See the <a href="configreference/columnOverride.html">&lt;columnOverride&gt;</a> page
246 for more information. Thanks to Dan Turkenkopf for the idea and a nice initial patch.</li> 256 for more information. Thanks to Dan Turkenkopf for the idea and a nice initial patch.</li>
247 <li>The IntrospectedColumn class now contains any column remarks returned during 257 <li>The IntrospectedColumn class now contains any column remarks returned during
248 database introspection. This may be useful for some CommentGenerators.</li> 258 database introspection. This may be useful for some CommentGenerators.</li>
249 <li>IBATIS-592 - Added attributes to IntrospectedTable that contain the calculated 259 <li>IBATIS-592 - Added attributes to IntrospectedTable that contain the calculated
250 SqlMap namespace, and the calculated runtime table names. These can now be overridden in 260 SqlMap namespace, and the calculated runtime table names. These can now be overridden in
251 plugins.</li> 261 plugins.</li>
252 <li>Fixed addCriterionfor JDBC* methods so that they all do a null check.</li> 262 <li>Fixed addCriterionfor JDBC* methods so that they all do a null check.</li>
253 <li>Fixed IbatorRunner so that configuration errors are shown (thanks to Karel Rank)</li> 263 <li>Fixed IbatorRunner so that configuration errors are shown (thanks to Karel Rank)</li>
254 <li>IBATIS-605 - Added Informix Dialect for 264 <li>IBATIS-605 - Added Informix Dialect for
255 <a href="configreference/generatedKey.html">&lt;generatedKey&gt;</a></li> 265 <a href="configreference/generatedKey.html">&lt;generatedKey&gt;</a></li>
256 <li>Addedd support for "distinct" on select by example methods</li> 266 <li>Addedd support for "distinct" on select by example methods</li>
257 <li>Added new "or" method to example classes</li> 267 <li>Added new "or" method to example classes</li>
258 <li>Added new "useCompoundPropertyNames" property on &lt;table&gt;</li> 268 <li>Added new "useCompoundPropertyNames" property on &lt;table&gt;</li>
259 <li>Enabled a far simpler method for extending the example classes</li> 269 <li>Enabled a far simpler method for extending the example classes</li>
260 <li>EqualsHashCodePlugin now generates far superior methods</li> 270 <li>EqualsHashCodePlugin now generates far superior methods</li>
261 271
262 </ul> 272 </ul>
263 273
264 <h2>Version 1.2.1</h2> 274 <h2>Version 1.2.1</h2>
265 <h3>Bugs Fixed</h3> 275 <h3>Bugs Fixed</h3>
266 <ul> 276 <ul>
267 <li>Fixed the IbatorObjectFactory so it will find internal classes from the context classloader.</li> 277 <li>Fixed the IbatorObjectFactory so it will find internal classes from the context classloader.</li>
268 <li>Fixed IBATIS-565 - ill formed comment in the SqlMapConfigPlugin</li> 278 <li>Fixed IBATIS-565 - ill formed comment in the SqlMapConfigPlugin</li>
269 </ul> 279 </ul>
270 280
271 <h3>Enhancements</h3> 281 <h3>Enhancements</h3>
272 <ul> 282 <ul>
273 <li>Modified plugin methods for model fields, getters, and setters so that 283 <li>Modified plugin methods for model fields, getters, and setters so that
274 the plugin will know which type of class (Primary Key, Base Record, or 284 the plugin will know which type of class (Primary Key, Base Record, or
275 Record with BLOBs) is being generated.</li> 285 Record with BLOBs) is being generated.</li>
276 <li>Added methods to IntrospectedTable to get/set attributes. This 286 <li>Added methods to IntrospectedTable to get/set attributes. This
277 allows plugin classes to maintain table based state between 287 allows plugin classes to maintain table based state between
278 plugin calls.</li> 288 plugin calls.</li>
279 <li>Added <code>initialized</code> method to the plugin API. This 289 <li>Added <code>initialized</code> method to the plugin API. This
280 allows plugins to alter some of the fundamental code generation items 290 allows plugins to alter some of the fundamental code generation items
281 (like the name of a generated class, for example).</li> 291 (like the name of a generated class, for example).</li>
282 <li>Added an example plugin to show usage of the <code>initialized</code> 292 <li>Added an example plugin to show usage of the <code>initialized</code>
283 method.</li> 293 method.</li>
284 </ul> 294 </ul>
285 295
286 <h2>Version 1.2.0</h2> 296 <h2>Version 1.2.0</h2>
287 <h3>Announcements</h3> 297 <h3>Announcements</h3>
288 <ul> 298 <ul>
289 <li>With version 1.2, Abator is renamed to Apache iBATIS Ibator. Several changes 299 <li>With version 1.2, Abator is renamed to Apache iBATIS Ibator. Several changes
290 have been made to the XML configuration as well as the Java API. See the 300 have been made to the XML configuration as well as the Java API. See the
291 <a href="migratingFromAbator.html">Migrating from Abator</a> page for detailed 301 <a href="migratingFromAbator.html">Migrating from Abator</a> page for detailed
292 information about changes needed to existing Abator configuration files.</li> 302 information about changes needed to existing Abator configuration files.</li>
293 </ul> 303 </ul>
294 304
295 <h3>Bugs Fixed</h3> 305 <h3>Bugs Fixed</h3>
296 <ul> 306 <ul>
297 <li>Fixed the JavaTypeResolver so that columns with unsupported data types 307 <li>Fixed the JavaTypeResolver so that columns with unsupported data types
298 may be overridden by configuration.</li> 308 may be overridden by configuration.</li>
299 <li>Fixed IBATIS-523 - a bug in the pre-release version of the EqualsHashCodePlugin</li> 309 <li>Fixed IBATIS-523 - a bug in the pre-release version of the EqualsHashCodePlugin</li>
300 <li>Fixed IBATIS-542 - upgrade the build to Ant version 1.7.1</li> 310 <li>Fixed IBATIS-542 - upgrade the build to Ant version 1.7.1</li>
301 </ul> 311 </ul>
302 312
303 <h3>Enhancements</h3> 313 <h3>Enhancements</h3>
304 <ul> 314 <ul>
305 <li>Ibator now includes a plugin mechanism. This mechanism can be used to 315 <li>Ibator now includes a plugin mechanism. This mechanism can be used to
306 add to or modify the code generated by Ibator. If you have previously 316 add to or modify the code generated by Ibator. If you have previously
307 extended one of Abator's code generators to change their behavior, we 317 extended one of Abator's code generators to change their behavior, we
308 strongly suggest that you move to a plugin. See the 318 strongly suggest that you move to a plugin. See the
309 <a href="configreference/ibatorPlugin.html">&lt;ibatorPlugin&gt;</a> page 319 <a href="configreference/ibatorPlugin.html">&lt;ibatorPlugin&gt;</a> page
310 for detailed information.</li> 320 for detailed information.</li>
311 <li>Ibator ships with the following plugins: 321 <li>Ibator ships with the following plugins:
312 <ul> 322 <ul>
313 <li>A plugin that will generate an SQL Map Config File 323 <li>A plugin that will generate an SQL Map Config File
314 (<code>org.apache.ibatis.ibator.plugins.SqlMapConfigPlugin</code>) 324 (<code>org.apache.ibatis.ibator.plugins.SqlMapConfigPlugin</code>)
315 </li> 325 </li>
316 <li>A plugin that will make generated model classes Serializable 326 <li>A plugin that will make generated model classes Serializable
317 (<code>org.apache.ibatis.ibator.plugins.SerializablePlugin</code>) 327 (<code>org.apache.ibatis.ibator.plugins.SerializablePlugin</code>)
318 </li> 328 </li>
319 <li>A plugin that will add <code>equals</code> and <code>hashCode</code> 329 <li>A plugin that will add <code>equals</code> and <code>hashCode</code>
320 methods to generated model classes 330 methods to generated model classes
321 (<code>org.apache.ibatis.ibator.plugins.EqualsHashCodePlugin</code>) 331 (<code>org.apache.ibatis.ibator.plugins.EqualsHashCodePlugin</code>)
322 </li> 332 </li>
323 </ul> 333 </ul>
324 </li> 334 </li>
325 <li>Added support for "runtimeCatalog" and "runtimeSchema" properties to the 335 <li>Added support for "runtimeCatalog" and "runtimeSchema" properties to the
326 <a href="configreference/table.html">&lt;table&gt;</a> 336 <a href="configreference/table.html">&lt;table&gt;</a>
327 configuration element. Thanks to Dan Turkenkopf for the idea and the 337 configuration element. Thanks to Dan Turkenkopf for the idea and the
328 patch!</li> 338 patch!</li>
329 <li>New generated method - insertSelective. This method will allow you to use 339 <li>New generated method - insertSelective. This method will allow you to use
330 column defaults on a table definition on insert</li> 340 column defaults on a table definition on insert</li>
331 <li>Added the ability to specify a that DAO implementation classes be in a 341 <li>Added the ability to specify a that DAO implementation classes be in a
332 separate package from the DAO interface classes.</li> 342 separate package from the DAO interface classes.</li>
333 </ul> 343 </ul>
334 344
335 <h3>Changes from Abator</h3> 345 <h3>Changes from Abator</h3>
336 <p>There are several breaking changes between Ibator and Abator. This list 346 <p>There are several breaking changes between Ibator and Abator. This list
337 details the changes, and has methods of resolving the differences.</p> 347 details the changes, and has methods of resolving the differences.</p>
338 <ul> 348 <ul>
339 <li>JSE 5.0 or higher is required for Ibator</li> 349 <li>JSE 5.0 or higher is required for Ibator</li>
340 <li>Ibator does not contain the "legacy" code generators from Abator. You must 350 <li>Ibator does not contain the "legacy" code generators from Abator. You must
341 choose "Ibatis2Java2" or "Ibatis2Java5" as a target runtime - and code generated from 351 choose "Ibatis2Java2" or "Ibatis2Java5" as a target runtime - and code generated from
342 Ibator is compatible with iBATIS version 2.2.0 or higher only. If you are 352 Ibator is compatible with iBATIS version 2.2.0 or higher only. If you are
343 using an earlier version of iBATIS - upgrade! If you are not able to upgrade, 353 using an earlier version of iBATIS - upgrade! If you are not able to upgrade,
344 then you must continue to use Abator.</li> 354 then you must continue to use Abator.</li>
345 <li>The classloading strategy in Ibator is changed from Abator. In all cases, we now recommend 355 <li>The classloading strategy in Ibator is changed from Abator. In all cases, we now recommend
346 specifying the classpath external to Ibator and we further recommend that you do not use 356 specifying the classpath external to Ibator and we further recommend that you do not use
347 the <code>&lt;classPathEntry&gt;</code> element. You may specify classpath entries 357 the <code>&lt;classPathEntry&gt;</code> element. You may specify classpath entries
348 if you feel you must, but those entries will only be used when loading JDBC drivers 358 if you feel you must, but those entries will only be used when loading JDBC drivers
349 of Java model root classes. If you write a custom extension to Ibator, or a plugin, 359 of Java model root classes. If you write a custom extension to Ibator, or a plugin,
350 you must specify that classpath entry external to Ibator.</li> 360 you must specify that classpath entry external to Ibator.</li>
351 <li>The API for extending Ibator is significantly changed from Abator. 361 <li>The API for extending Ibator is significantly changed from Abator.
352 In most cases, implementations of the old Abator interfaces should 362 In most cases, implementations of the old Abator interfaces should
353 be converted to Ibator plugins. See the 363 be converted to Ibator plugins. See the
354 <a href="reference/extending.html">Extending Ibator</a> for more information.</li> 364 <a href="reference/extending.html">Extending Ibator</a> for more information.</li>
355 <li>The <code>afterXXXGenerationHook</code> methods have been removed from 365 <li>The <code>afterXXXGenerationHook</code> methods have been removed from
356 all Ibator supplied implementations of the core interfaces. If you 366 all Ibator supplied implementations of the core interfaces. If you
357 were extending an Ibator supplied implementation to make use of these methods, 367 were extending an Ibator supplied implementation to make use of these methods,
358 then you <em>must</em> migrate your code to an Ibator plugin.</li> 368 then you <em>must</em> migrate your code to an Ibator plugin.</li>
359 <li>The build has been significantly modified and now includes an Emma based 369 <li>The build has been significantly modified and now includes an Emma based
360 code coverage report.</li> 370 code coverage report.</li>
361 <li>Changes to the XML configuration file are required. See the 371 <li>Changes to the XML configuration file are required. See the
362 <a href="migratingFromAbator.html">Migrating from Abator</a> page for detailed 372 <a href="migratingFromAbator.html">Migrating from Abator</a> page for detailed
363 information</li> 373 information</li>
364 </ul> 374 </ul>
365 375
366 <h2>Version 1.1.0</h2> 376 <h2>Version 1.1.0</h2>
367 <h3>Announcements</h3> 377 <h3>Announcements</h3>
368 <ul> 378 <ul>
369 <li>The next release of Abator will require JRE 5.0 or higher.</li> 379 <li>The next release of Abator will require JRE 5.0 or higher.</li>
370 <li>Java2 is now the default generator set. This will cause different code to be 380 <li>Java2 is now the default generator set. This will cause different code to be
371 generated if you have not specified a generator set previously. To remedy this, 381 generated if you have not specified a generator set previously. To remedy this,
372 set the generator set to "Legacy".</li> 382 set the generator set to "Legacy".</li>
373 </ul> 383 </ul>
374 384
375 <h3>New Generated Methods</h3> 385 <h3>New Generated Methods</h3>
376 <p>Abator will generate these new methods:</p> 386 <p>Abator will generate these new methods:</p>
377 <dl> 387 <dl>
378 <dt><b>countByExample</b></dt> 388 <dt><b>countByExample</b></dt>
379 <dd>This method will return an integer representing the number of rows in a table 389 <dd>This method will return an integer representing the number of rows in a table
380 that match the given criteria.</dd> 390 that match the given criteria.</dd>
381 <dt><b>updateByExample</b></dt> 391 <dt><b>updateByExample</b></dt>
382 <dd>This method will update all rows in a table that match a given criteria. This method is 392 <dd>This method will update all rows in a table that match a given criteria. This method is
383 available in the Java2 and Java5 generator sets only. There is also a "selective" version 393 available in the Java2 and Java5 generator sets only. There is also a "selective" version
384 of the method that only updates certain columns of a table (the selective version of this 394 of the method that only updates certain columns of a table (the selective version of this
385 method is probably the more useful version to use in most situations).</dd> 395 method is probably the more useful version to use in most situations).</dd>
386 </dl> 396 </dl>
387 397
388 <h3>Bugs Fixed</h3> 398 <h3>Bugs Fixed</h3>
389 <ul> 399 <ul>
390 <li>Fixed bug for corner case where a criteria class is created, but no criteria 400 <li>Fixed bug for corner case where a criteria class is created, but no criteria
391 are set.</li> 401 are set.</li>
392 <li>Fixed a bug that caused the JavaModelGenerator's "trimStrings" property to fail</li> 402 <li>Fixed a bug that caused the JavaModelGenerator's "trimStrings" property to fail</li>
393 <li>Fixed the XML file merger so that internal entities are preserved</li> 403 <li>Fixed the XML file merger so that internal entities are preserved</li>
394 <li>Fixed the XML configuration parser so that external entities are handled properly</li> 404 <li>Fixed the XML configuration parser so that external entities are handled properly</li>
395 <li>Fixed bug - incorrect datatype mapping for JDBC BIT datatype</li> 405 <li>Fixed bug - incorrect datatype mapping for JDBC BIT datatype</li>
396 <li>Fixed bug where Abator generated incorrect properties for certain database columns 406 <li>Fixed bug where Abator generated incorrect properties for certain database columns
397 (for example, if the column name is I_NAME)</li> 407 (for example, if the column name is I_NAME)</li>
398 </ul> 408 </ul>
399 409
400 <h3>Miscellaneous Changes</h3> 410 <h3>Miscellaneous Changes</h3>
401 <ul> 411 <ul>
402 <li>Added the ability to specify properties to ignore qualifiers and change runtime 412 <li>Added the ability to specify properties to ignore qualifiers and change runtime
403 table names in the generated SQL for a table. Primary use cases for this 413 table names in the generated SQL for a table. Primary use cases for this
404 support include: 414 support include:
405 <ul> 415 <ul>
406 <li>Generating objects for a table that has a public synonym or alias</li> 416 <li>Generating objects for a table that has a public synonym or alias</li>
407 <li>Generating objects for a table that exists in many schemas, and the 417 <li>Generating objects for a table that exists in many schemas, and the
408 schema will be selected at runtime</li> 418 schema will be selected at runtime</li>
409 </ul> 419 </ul>
410 See the <a href="configreference/table.html">&lt;table&gt;</a> 420 See the <a href="configreference/table.html">&lt;table&gt;</a>
411 reference page for more information, or the 421 reference page for more information, or the
412 <a href="usage/oracle.html">Oracle</a> reference page for an example.</li> 422 <a href="usage/oracle.html">Oracle</a> reference page for an example.</li>
413 <li>Added support for delimiting SQL identifiers for the use cases where identifiers 423 <li>Added support for delimiting SQL identifiers for the use cases where identifiers
414 contain spaces or SQL reserved words. 424 contain spaces or SQL reserved words.
415 See the <a href="configreference/table.html">&lt;table&gt;</a>, 425 See the <a href="configreference/table.html">&lt;table&gt;</a>,
416 <a href="configreference/abatorContext.html">&lt;abatorContext&gt;</a>, 426 <a href="configreference/abatorContext.html">&lt;abatorContext&gt;</a>,
417 and <a href="configreference/columnOverride.html">&lt;columnOverride&gt;</a> 427 and <a href="configreference/columnOverride.html">&lt;columnOverride&gt;</a>
418 reference pages for more information.</li> 428 reference pages for more information.</li>
419 <li>Added SYBASE dialect for generated keys. 429 <li>Added SYBASE dialect for generated keys.
420 See the <a href="configreference/generatedKey.html">&lt;generatedKey&gt;</a> 430 See the <a href="configreference/generatedKey.html">&lt;generatedKey&gt;</a>
421 reference page for more information.</li> 431 reference page for more information.</li>
422 <li>Added DB2_MF (DB2 on Main Frames) dialect for generated keys. 432 <li>Added DB2_MF (DB2 on Main Frames) dialect for generated keys.
423 See the <a href="configreference/generatedKey.html">&lt;generatedKey&gt;</a> 433 See the <a href="configreference/generatedKey.html">&lt;generatedKey&gt;</a>
424 reference page for more information.</li> 434 reference page for more information.</li>
425 <li>Abator will now automatically escape identifiers that contain the $ or # characters 435 <li>Abator will now automatically escape identifiers that contain the $ or # characters
426 as these characters have special meaning in iBATIS configuration files.</li> 436 as these characters have special meaning in iBATIS configuration files.</li>
427 <li>Added a <code>clear</code> method to the generated example classes (in the Java2 and Java5 437 <li>Added a <code>clear</code> method to the generated example classes (in the Java2 and Java5
428 generator sets only). This allows reuse of these classes.</li> 438 generator sets only). This allows reuse of these classes.</li>
429 <li>Added the ability to specify that result maps should use column indexes rather 439 <li>Added the ability to specify that result maps should use column indexes rather
430 than column names in the result mappings. Primary use cases for this 440 than column names in the result mappings. Primary use cases for this
431 support include: 441 support include:
432 <ul> 442 <ul>
433 <li>When tables have columns whose name is only differentiated by 443 <li>When tables have columns whose name is only differentiated by
434 case (e.g. "first name" and "First Name")</li> 444 case (e.g. "first name" and "First Name")</li>
435 <li>When you want to make the selects as fast as possible (there is a slight 445 <li>When you want to make the selects as fast as possible (there is a slight
436 performance benefit when using column indexes)</li> 446 performance benefit when using column indexes)</li>
437 </ul> 447 </ul>
438 See the <a href="configreference/table.html">&lt;table&gt;</a> 448 See the <a href="configreference/table.html">&lt;table&gt;</a>
439 reference page for more information.</li> 449 reference page for more information.</li>
440 <li>Made the generated Example and Criteria classes extendable. Added some documentation 450 <li>Made the generated Example and Criteria classes extendable. Added some documentation
441 about how to extend these classes. See the 451 about how to extend these classes. See the
442 <a href="generatedobjects/extendingExampleClass.html">Extending the Example Classes</a> 452 <a href="generatedobjects/extendingExampleClass.html">Extending the Example Classes</a>
443 reference page for more information.</li> 453 reference page for more information.</li>
444 <li>Made the legacy DAOs extendable.</li> 454 <li>Made the legacy DAOs extendable.</li>
445 <li>Added the ability to provide a renaming rule for columns. This is for the 455 <li>Added the ability to provide a renaming rule for columns. This is for the
446 use case where columns have a common prefix that should be removed before 456 use case where columns have a common prefix that should be removed before
447 calculating the property name. See the 457 calculating the property name. See the
448 <a href="configreference/columnRenamingRule.html">&lt;columnRenamingRule&gt;</a> 458 <a href="configreference/columnRenamingRule.html">&lt;columnRenamingRule&gt;</a>
449 reference page for more information.</li> 459 reference page for more information.</li>
450 <li>Added support for persisting a configuration to XML - this to enable 460 <li>Added support for persisting a configuration to XML - this to enable
451 a graphical editor in the future.</li> 461 a graphical editor in the future.</li>
452 <li>Add afterXXXGenerationHook() methods in all generators to enable adding 462 <li>Add afterXXXGenerationHook() methods in all generators to enable adding
453 extra Java code or XML elements to any generated object. This will make 463 extra Java code or XML elements to any generated object. This will make
454 it easier to create customized generators.</li> 464 it easier to create customized generators.</li>
455 <li>API change to allow generating with selected contexts rather than 465 <li>API change to allow generating with selected contexts rather than
456 the entire config file.</li> 466 the entire config file.</li>
457 <li>API change to allow generating with selected tables rather than 467 <li>API change to allow generating with selected tables rather than
458 the entire config file.</li> 468 the entire config file.</li>
459 <li>Exposed new support for selecting tables and/or contexts to the 469 <li>Exposed new support for selecting tables and/or contexts to the
460 command line and the Ant task - this has added an advanced syntax to the command 470 command line and the Ant task - this has added an advanced syntax to the command
461 line for Abator. See the 471 line for Abator. See the
462 <a href="running.html">Running Abator</a> reference page for more information.</li> 472 <a href="running.html">Running Abator</a> reference page for more information.</li>
463 <li><code>rootClass</code> and <code>rootInterface</code> may now be specified for each table. 473 <li><code>rootClass</code> and <code>rootInterface</code> may now be specified for each table.
464 See the <a href="configreference/table.html">&lt;table&gt;</a> 474 See the <a href="configreference/table.html">&lt;table&gt;</a>
465 reference page for more information.</li> 475 reference page for more information.</li>
466 <li>If a <code>rootClass</code> is specified for any table, Abator will now check in the 476 <li>If a <code>rootClass</code> is specified for any table, Abator will now check in the
467 rootClass to see if a generated property already exists in the root class. If it does, 477 rootClass to see if a generated property already exists in the root class. If it does,
468 Abator will not generate the property. The &lt;javaModelGenerator&gt; element now 478 Abator will not generate the property. The &lt;javaModelGenerator&gt; element now
469 accepts a property to specify the classpath of the <code>rootClass</code>. See the 479 accepts a property to specify the classpath of the <code>rootClass</code>. See the
470 <a href="configreference/javaModelGenerator.html">&lt;javaModelGenerator&gt;</a> 480 <a href="configreference/javaModelGenerator.html">&lt;javaModelGenerator&gt;</a>
471 reference page for more information. Thanks to Ashok Madhavan for the beginnings 481 reference page for more information. Thanks to Ashok Madhavan for the beginnings
472 of this code.</li> 482 of this code.</li>
473 <li>Allowed specifying a type (pre or post) for the generated key element. See the 483 <li>Allowed specifying a type (pre or post) for the generated key element. See the
474 <a href="configreference/generatedKey.html">&lt;generatedKey&gt;</a> 484 <a href="configreference/generatedKey.html">&lt;generatedKey&gt;</a>
475 reference page for more information.</li> 485 reference page for more information.</li>
476 <li>Added a comment generator interface to enable generation of custom comments. 486 <li>Added a comment generator interface to enable generation of custom comments.
477 See the <a href="configreference/commentGenerator.html">&lt;commentGenerator&gt;</a> 487 See the <a href="configreference/commentGenerator.html">&lt;commentGenerator&gt;</a>
478 reference page for more information.</li> 488 reference page for more information.</li>
479 </ul> 489 </ul>
480 490
481 <h2>Version 1.0.0</h2> 491 <h2>Version 1.0.0</h2>
482 <h3>Generator Sets</h3> 492 <h3>Generator Sets</h3>
483 <p>A generator set is a set of 493 <p>A generator set is a set of
484 code generators (SQL Map Generator, Java Model Generator, DAO Generator, and Java Type Resolver). 494 code generators (SQL Map Generator, Java Model Generator, DAO Generator, and Java Type Resolver).
485 Abator now ships three different generator sets. The generated code from these three 495 Abator now ships three different generator sets. The generated code from these three
486 generator sets is slightly different, and the use of the generated objects is slightly 496 generator sets is slightly different, and the use of the generated objects is slightly
487 different too. The concepts are exactly the same. With the newer generator sets, the 497 different too. The concepts are exactly the same. With the newer generator sets, the
488 "by example" methods have been vastly improved. It is now possible to generate 498 "by example" methods have been vastly improved. It is now possible to generate
489 <b>virtually any</b> WHERE clause (including IN and BETWEEN predicates). Lastly, the new 499 <b>virtually any</b> WHERE clause (including IN and BETWEEN predicates). Lastly, the new
490 generator sets generate much more concise code - the DAOs and SQL Maps are of 500 generator sets generate much more concise code - the DAOs and SQL Maps are of
491 normal size, and there are no extraneous methods. The example class in the new generator 501 normal size, and there are no extraneous methods. The example class in the new generator
492 sets encapsulates all the function needed to generate dynamic queries.</p> 502 sets encapsulates all the function needed to generate dynamic queries.</p>
493 <p>The three generator sets shipped with Abator are as follows:</p> 503 <p>The three generator sets shipped with Abator are as follows:</p>
494 <dl> 504 <dl>
495 <dt>Legacy</dt> 505 <dt>Legacy</dt>
496 <dd>This generator set generates code that is the same as previous versions of 506 <dd>This generator set generates code that is the same as previous versions of
497 Abator. There are some limitations with this generator set and we strongly 507 Abator. There are some limitations with this generator set and we strongly
498 recommend that you choose one of the other sets. However, this set remains 508 recommend that you choose one of the other sets. However, this set remains
499 the default for now. <b>This generator set will likely be removed in a future 509 the default for now. <b>This generator set will likely be removed in a future
500 version of Abator.</b></dd> 510 version of Abator.</b></dd>
501 <dt>Java2</dt> 511 <dt>Java2</dt>
502 <dd>This generator set generates code that is compatible with iBATIS versions 2.2.0 and 512 <dd>This generator set generates code that is compatible with iBATIS versions 2.2.0 and
503 higher. With this generator set the "by example" methods are much more powerful 513 higher. With this generator set the "by example" methods are much more powerful
504 than in the legacy set. It is now possible to generate 514 than in the legacy set. It is now possible to generate
505 virtually unlimited SQL WHERE clauses with Abator generated code (including "IN" 515 virtually unlimited SQL WHERE clauses with Abator generated code (including "IN"
506 and "BETWEEN" clauses). <b>This generator set will likely become the default set in a 516 and "BETWEEN" clauses). <b>This generator set will likely become the default set in a
507 future version of Abator.</b></dd> 517 future version of Abator.</b></dd>
508 <dt>Java5</dt> 518 <dt>Java5</dt>
509 <dd>This generator set has the same capabilities as the Java2 generator set with the 519 <dd>This generator set has the same capabilities as the Java2 generator set with the
510 added feature of generating code that is JSE 5.0 compliant using parameterized 520 added feature of generating code that is JSE 5.0 compliant using parameterized
511 types and annotations.</dd> 521 types and annotations.</dd>
512 </dl> 522 </dl>
513 <p><b>Important:</b> code generated with the Java2 or Java5 generator sets is not 100% 523 <p><b>Important:</b> code generated with the Java2 or Java5 generator sets is not 100%
514 compatible with code generated with the Legacy set - especially in the use of the 524 compatible with code generated with the Legacy set - especially in the use of the
515 "by example" methods. Also note that the "by example" methods in these generator sets rely 525 "by example" methods. Also note that the "by example" methods in these generator sets rely
516 on iBATIS dynamic SQL support that is missing in iBATIS versions prior to version 2.2.0.</p> 526 on iBATIS dynamic SQL support that is missing in iBATIS versions prior to version 2.2.0.</p>
517 <p>A generator set is selected with the <code>generatorSet</code> attribute of the 527 <p>A generator set is selected with the <code>generatorSet</code> attribute of the
518 <code>&lt;abatorContext&gt;</code> element. See the 528 <code>&lt;abatorContext&gt;</code> element. See the
519 <a href="configreference/abatorContext.html">&lt;abatorContext&gt;</a> reference page for 529 <a href="configreference/abatorContext.html">&lt;abatorContext&gt;</a> reference page for
520 more information.</p> 530 more information.</p>
521 531
522 <p>Use of the example classes is different with the different generator sets. See the 532 <p>Use of the example classes is different with the different generator sets. See the
523 <a href="generatedobjects/exampleClassUsage.html">Example Class Usage</a> page for more 533 <a href="generatedobjects/exampleClassUsage.html">Example Class Usage</a> page for more
524 information.</p> 534 information.</p>
525 535
526 <h3>Model Types</h3> 536 <h3>Model Types</h3>
527 <p>A model type is used to give you more control over the types of domain objects 537 <p>A model type is used to give you more control over the types of domain objects
528 generated by Abator. Abator now supports three different types of domain models 538 generated by Abator. Abator now supports three different types of domain models
529 as follows:</p> 539 as follows:</p>
530 <dl> 540 <dl>
531 <dt>conditional</dt> 541 <dt>conditional</dt>
532 <dd>This model is similar to the hierarchical model except that a separate 542 <dd>This model is similar to the hierarchical model except that a separate
533 class will not be generated if that separate class would only contain 543 class will not be generated if that separate class would only contain
534 one field. So if a table has only one primary key field, that field 544 one field. So if a table has only one primary key field, that field
535 will be merged into the base record class. This model type is the default. 545 will be merged into the base record class. This model type is the default.
536 <b>Note that this model type may generate classes that are not 100% 546 <b>Note that this model type may generate classes that are not 100%
537 with classes generated in previous versions of Abator.</b></dd> 547 with classes generated in previous versions of Abator.</b></dd>
538 <dt>flat</dt> 548 <dt>flat</dt>
539 <dd>This model generates only one domain class for any table. The class 549 <dd>This model generates only one domain class for any table. The class
540 will hold all fields in the table.</dd> 550 will hold all fields in the table.</dd>
541 <dt>hierarchical</dt> 551 <dt>hierarchical</dt>
542 <dd>This model is the same as the model shipped with the initial versions 552 <dd>This model is the same as the model shipped with the initial versions
543 of Abator. This model will generate a primary key class if the table has 553 of Abator. This model will generate a primary key class if the table has
544 a primary key, another class that holds any BLOB columns in the table, and 554 a primary key, another class that holds any BLOB columns in the table, and
545 another class that holds the remaining fields. There is an appropriate 555 another class that holds the remaining fields. There is an appropriate
546 inheritance relationship between the classes.</dd> 556 inheritance relationship between the classes.</dd>
547 </dl> 557 </dl>
548 558
549 <p>Model types can be specified as a default for an entire context, and you may 559 <p>Model types can be specified as a default for an entire context, and you may
550 override the default for each table in a context. See the 560 override the default for each table in a context. See the
551 <a href="configreference/abatorContext.html">&lt;abatorContext&gt;</a> reference page for 561 <a href="configreference/abatorContext.html">&lt;abatorContext&gt;</a> reference page for
552 more information about setting the context default.. 562 more information about setting the context default..
553 See the <a href="configreference/table.html">&lt;table&gt;</a> 563 See the <a href="configreference/table.html">&lt;table&gt;</a>
554 reference page for more information about setting a model type for specific tables. 564 reference page for more information about setting a model type for specific tables.
555 </p> 565 </p>
556 <p><b>Important:</b> the default value is conditional - this is a non-backward compatible 566 <p><b>Important:</b> the default value is conditional - this is a non-backward compatible
557 change from previous versions of Abator.</p> 567 change from previous versions of Abator.</p>
558 568
559 <h3>updateByPrimaryKeySelective</h3> 569 <h3>updateByPrimaryKeySelective</h3>
560 <p>This is a new mapped SQL statement, and new DAO method, that will only 570 <p>This is a new mapped SQL statement, and new DAO method, that will only
561 update columns whose corresponding properties in the parameter class are non-null. 571 update columns whose corresponding properties in the parameter class are non-null.
562 This can be used to update certain 572 This can be used to update certain
563 columns in a record without needing to update the entire record. 573 columns in a record without needing to update the entire record.
564 </p> 574 </p>
565 <p><b>Important:</b> any column that is mapped to a primitive type 575 <p><b>Important:</b> any column that is mapped to a primitive type
566 will always be updated.</p> 576 will always be updated.</p>
567 577
568 <h3>Miscellaneous Changes</h3> 578 <h3>Miscellaneous Changes</h3>
569 <ul> 579 <ul>
570 <li>Added the ability to specify a table alias. This aids in reuse of generated 580 <li>Added the ability to specify a table alias. This aids in reuse of generated
571 SQL map elements. See the <a href="configreference/table.html">&lt;table&gt;</a> 581 SQL map elements. See the <a href="configreference/table.html">&lt;table&gt;</a>
572 reference page for more information.</li> 582 reference page for more information.</li>
573 <li>Fixed the XML file merger so that extraneous blank lines at the end of the 583 <li>Fixed the XML file merger so that extraneous blank lines at the end of the
574 file are removed.</li> 584 file are removed.</li>
575 <li>Added the ability to specify a type handler for table columns. 585 <li>Added the ability to specify a type handler for table columns.
576 See the <a href="configreference/columnOverride.html">&lt;columnOverride&gt;</a> 586 See the <a href="configreference/columnOverride.html">&lt;columnOverride&gt;</a>
577 reference page for more information.</li> 587 reference page for more information.</li>
578 <li>Added the ability to specify the visibility of the DAO "by example" methods. 588 <li>Added the ability to specify the visibility of the DAO "by example" methods.
579 This allows you to make the methods private for internal use only. 589 This allows you to make the methods private for internal use only.
580 See the <a href="configreference/javaClientGenerator.html">&lt;javaClientGenerator&gt;</a> 590 See the <a href="configreference/javaClientGenerator.html">&lt;javaClientGenerator&gt;</a>
581 reference page for more information.</li> 591 reference page for more information.</li>
582 <li>Added the ability to override the naming convention for DAO method names. 592 <li>Added the ability to override the naming convention for DAO method names.
583 See the <a href="configreference/javaClientGenerator.html">&lt;javaClientGenerator&gt;</a> 593 See the <a href="configreference/javaClientGenerator.html">&lt;javaClientGenerator&gt;</a>
584 reference page for more information.</li> 594 reference page for more information.</li>
585 <li>Added the ability to specify wildcards for schema or tableName in a table 595 <li>Added the ability to specify wildcards for schema or tableName in a table
586 configuration. This will allow generation of many tables with a simple 596 configuration. This will allow generation of many tables with a simple
587 XML configuration. 597 XML configuration.
588 See the <a href="configreference/table.html">&lt;table&gt;</a> 598 See the <a href="configreference/table.html">&lt;table&gt;</a>
589 reference page for more information.</li> 599 reference page for more information.</li>
590 <li>Added the ability to escape wildcard characters in schema or table names 600 <li>Added the ability to escape wildcard characters in schema or table names
591 if required by the driver. See the <a href="configreference/table.html">&lt;table&gt;</a> 601 if required by the driver. See the <a href="configreference/table.html">&lt;table&gt;</a>
592 reference page for more information.</li> 602 reference page for more information.</li>
593 <li>Added the ability to suppress JSE 5.0 type warning messages for non-parameterized 603 <li>Added the ability to suppress JSE 5.0 type warning messages for non-parameterized
594 types if you are using the Legacy or Java2 generator sets in a JSE 5.0 environment. 604 types if you are using the Legacy or Java2 generator sets in a JSE 5.0 environment.
595 See the <a href="configreference/abatorContext.html">&lt;abatorContext&gt;</a> 605 See the <a href="configreference/abatorContext.html">&lt;abatorContext&gt;</a>
596 reference page for more information. 606 reference page for more information.
597 </li> 607 </li>
598 <li>Added the ability to specify an external properties file for passing 608 <li>Added the ability to specify an external properties file for passing
599 parameters into an Abator configuration file (like the iBATIS properties 609 parameters into an Abator configuration file (like the iBATIS properties
600 file). See the <a href="configreference/properties.html">&lt;properties&gt;</a> 610 file). See the <a href="configreference/properties.html">&lt;properties&gt;</a>
601 reference page for more information. 611 reference page for more information.
602 </li> 612 </li>
603 <li>The Ant task now supports a "verbose" attribute. See the 613 <li>The Ant task now supports a "verbose" attribute. See the
604 <a href="running.html">Running Abator</a> page for more information. 614 <a href="running.html">Running Abator</a> page for more information.
605 </li> 615 </li>
606 <li>The Ant task now supports a nested property set for passing values into 616 <li>The Ant task now supports a nested property set for passing values into
607 an Abator configuration file. See the 617 an Abator configuration file. See the
608 <a href="running.html">Running Abator</a> page for more information. 618 <a href="running.html">Running Abator</a> page for more information.
609 </li> 619 </li>
610 </ul> 620 </ul>
611 </body> 621 </body>
612 </html> 622 </html>
Powered by Google Project Hosting