Skip to content

Commit 51f36af

Browse files
committed
More updates for the new annotated mapper generator
1 parent 0d312ec commit 51f36af

File tree

21 files changed

+209
-697
lines changed

21 files changed

+209
-697
lines changed

mybatis-generator-core/doc/html/configreference/context.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ <h2>Child Elements</h2>
144144
<li><a href="jdbcConnection.html">&lt;jdbcConnection&gt;</a> (1 Required)</li>
145145
<li><a href="javaTypeResolver.html">&lt;javaTypeResolver&gt;</a> (0 or 1)</li>
146146
<li><a href="javaModelGenerator.html">&lt;javaModelGenerator&gt;</a> (1 Required)</li>
147-
<li><a href="sqlMapGenerator.html">&lt;sqlMapGenerator&gt;</a> (1 Required)</li>
147+
<li><a href="sqlMapGenerator.html">&lt;sqlMapGenerator&gt;</a> (0 or 1)</li>
148148
<li><a href="javaClientGenerator.html">&lt;javaClientGenerator&gt;</a> (0 or 1)</li>
149149
<li><a href="table.html">&lt;table&gt;</a> (1..N)</li>
150150
</ul>

mybatis-generator-core/doc/html/configreference/javaClientGenerator.html

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,12 @@ <h2>Required Attributes</h2>
4343
<tr>
4444
<td colspan="2">If the &lt;context&gt; targetRuntime is <b>MyBatis3</b>:</td>
4545
<tr>
46+
<tr>
47+
<th nowrap="nowrap" valign="top">ANNOTATEDMAPPER</th>
48+
<td>The generated objects will be Java interfaces for the MyBatis 3.x mapper
49+
infrastructure. The interfaces will be based on annotations and MyBatis 3.x SqlProviders.
50+
No XML mapper files will be generated.</td>
51+
</tr>
4652
<tr>
4753
<th nowrap="nowrap" valign="top">XMLMAPPER</th>
4854
<td>The generated objects will be Java interfaces for the MyBatis 3.x mapper

mybatis-generator-core/doc/html/configreference/sqlMapGenerator.html

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,12 @@
1818
<h1>The &lt;sqlMapGenerator&gt; Element</h1>
1919
<p>The &lt;sqlMapGenerator&gt; element is used to define properties of the SQL map
2020
generator. The SQL Map Generator builds a MyBatis/iBATIS formatted SQL map XML file
21-
for each introspected table. This element is a required child element
21+
for each introspected table.</p>
22+
<p>If iBATIS2 is targeted, then this element is a required child element
2223
of the <a href="context.html">&lt;context&gt;</a> element.</p>
24+
<p>If MyBatis3 is targeted, then this element is a required child element
25+
of the <a href="context.html">&lt;context&gt;</a> element only if your chosen
26+
JavaClientGenerator requires XML, or if you do not specify a JavaClientGenerator.</p>
2327
<h2>Required Attributes</h2>
2428
<table border="1" cellspacing="0" cellpadding="5">
2529
<tr>

mybatis-generator-core/doc/html/whatsNew.html

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,17 @@ <h3>Bugs Fixed</h3>
2828
</ul>
2929
<h3>Enhancements</h3>
3030
<ul>
31+
<li>Added a new MyBatis 3 generator that generates code based solely on annotations
32+
with no generated XML. Configuration settings for this new generator are as follows:
33+
<ul>
34+
<li>The <code>targetRuntime</code> attribute of
35+
<a href="configreference/context.html">&lt;context&gt;</a>
36+
element is <b>MyBatis3</b></li>
37+
<li>The <code>type</code> attribute of
38+
<a href="configreference/javaClientGenerator.html">&lt;javaClientGenerator&gt;</a>
39+
element is <b>ANNOTATEDMAPPER</b></li>
40+
</ul>
41+
</li>
3142
<li>Add support for JDBC types NCHAR, NCLOB, NVARCHAR to match MyBatis3.</li>
3243
<li>Added support for "useGeneratedKeys" in MyBatis3. See
3344
<a href="configreference/generatedKey.html">&lt;generatedKey&gt;</a>

mybatis-generator-core/src/main/java/org/mybatis/generator/api/IntrospectedTable.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1094,4 +1094,14 @@ public boolean isConstructorBased() {
10941094

10951095
return isTrue(properties.getProperty(PropertyRegistry.ANY_CONSTRUCTOR_BASED));
10961096
}
1097+
1098+
/**
1099+
* Should return true if an XML generator is required for this table.
1100+
* This method will be called during validation of the configuration,
1101+
* so it should not rely on database introspection. This method
1102+
* simply tells the validator if an XML configuration is normally
1103+
* required for this implementation.
1104+
* @return
1105+
*/
1106+
public abstract boolean requiresXMLGenerator();
10971107
}

mybatis-generator-core/src/main/java/org/mybatis/generator/codegen/AbstractJavaClientGenerator.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,17 @@
2626
*/
2727
public abstract class AbstractJavaClientGenerator extends AbstractJavaGenerator {
2828

29+
private boolean requiresXMLGenerator;
30+
31+
public AbstractJavaClientGenerator(boolean requiresXMLGenerator) {
32+
super();
33+
this.requiresXMLGenerator = requiresXMLGenerator;
34+
}
35+
2936
/**
3037
* @return true if matching XML is required
3138
*/
32-
public abstract boolean requiresMatchedXMLGenerator();
39+
public boolean requiresXMLGenerator() {
40+
return requiresXMLGenerator;
41+
}
3342
}

mybatis-generator-core/src/main/java/org/mybatis/generator/codegen/ibatis2/IntrospectedTableIbatis2Java2Impl.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,4 +197,9 @@ public int getGenerationSteps() {
197197
// the
198198
// sqlMapGenerator
199199
}
200+
201+
@Override
202+
public boolean requiresXMLGenerator() {
203+
return true;
204+
}
200205
}

mybatis-generator-core/src/main/java/org/mybatis/generator/codegen/ibatis2/dao/DAOGenerator.java

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ public class DAOGenerator extends AbstractJavaClientGenerator {
6363

6464
public DAOGenerator(AbstractDAOTemplate daoTemplate,
6565
boolean generateForJava5) {
66-
super();
66+
super(true);
6767
this.daoTemplate = daoTemplate;
6868
this.generateForJava5 = generateForJava5;
6969
}
@@ -324,9 +324,4 @@ protected void initializeAndExecuteGenerator(
324324
methodGenerator.addImplementationElements(topLevelClass);
325325
methodGenerator.addInterfaceElements(interfaze);
326326
}
327-
328-
@Override
329-
public boolean requiresMatchedXMLGenerator() {
330-
return true;
331-
}
332327
}

mybatis-generator-core/src/main/java/org/mybatis/generator/codegen/mybatis3/IntrospectedTableMyBatis3Impl.java

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -77,10 +77,22 @@ protected void calculateXmlMapperGenerator(List<String> warnings,
7777
*/
7878
protected boolean calculateClientGenerators(List<String> warnings,
7979
ProgressCallback progressCallback) {
80-
if (context.getJavaClientGeneratorConfiguration() == null) {
80+
AbstractJavaClientGenerator javaGenerator = createJavaClientGenerator();
81+
if (javaGenerator == null) {
8182
return true;
8283
}
8384

85+
initializeAbstractGenerator(javaGenerator, warnings, progressCallback);
86+
clientGenerators.add(javaGenerator);
87+
88+
return javaGenerator.requiresXMLGenerator();
89+
}
90+
91+
private AbstractJavaClientGenerator createJavaClientGenerator() {
92+
if (context.getJavaClientGeneratorConfiguration() == null) {
93+
return null;
94+
}
95+
8496
String type = context.getJavaClientGeneratorConfiguration()
8597
.getConfigurationType();
8698

@@ -95,11 +107,8 @@ protected boolean calculateClientGenerators(List<String> warnings,
95107
javaGenerator = (AbstractJavaClientGenerator) ObjectFactory
96108
.createInternalObject(type);
97109
}
98-
99-
initializeAbstractGenerator(javaGenerator, warnings, progressCallback);
100-
clientGenerators.add(javaGenerator);
101110

102-
return javaGenerator.requiresMatchedXMLGenerator();
111+
return javaGenerator;
103112
}
104113

105114
protected void calculateJavaModelGenerators(List<String> warnings,
@@ -199,4 +208,16 @@ public int getGenerationSteps() {
199208
public boolean isJava5Targeted() {
200209
return true;
201210
}
211+
212+
@Override
213+
public boolean requiresXMLGenerator() {
214+
AbstractJavaClientGenerator javaClientGenerator =
215+
createJavaClientGenerator();
216+
217+
if (javaClientGenerator == null) {
218+
return true;
219+
} else {
220+
return javaClientGenerator.requiresXMLGenerator();
221+
}
222+
}
202223
}

mybatis-generator-core/src/main/java/org/mybatis/generator/codegen/mybatis3/javamapper/AnnotatedClientGenerator.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@
2222

2323
public class AnnotatedClientGenerator extends JavaMapperGenerator {
2424

25+
public AnnotatedClientGenerator() {
26+
super(false);
27+
}
28+
2529
@Override
2630
protected void addCountByExampleMethod(Interface interfaze) {
2731
if (introspectedTable.getRules().generateCountByExample()) {
@@ -135,11 +139,6 @@ protected void addUpdateByPrimaryKeyWithoutBLOBsMethod(Interface interfaze) {
135139
}
136140
}
137141

138-
@Override
139-
public boolean requiresMatchedXMLGenerator() {
140-
return false;
141-
}
142-
143142
@Override
144143
public List<CompilationUnit> getExtraCompilationUnits() {
145144
SqlProviderGenerator sqlProviderGenerator = new SqlProviderGenerator();

0 commit comments

Comments
 (0)