Skip to content

Commit 6bf00fc

Browse files
Added getMappedStatement(String, Boolean) in Configuration so that validation can be skipped by builders that use getMappedStatement() method.
1 parent 82e43cb commit 6bf00fc

File tree

6 files changed

+49
-3
lines changed

6 files changed

+49
-3
lines changed

src/main/java/org/apache/ibatis/builder/annotation/MapperAnnotationBuilder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -489,7 +489,7 @@ private KeyGenerator handleSelectKeyAnnotation(SelectKey selectKeyAnnotation, St
489489

490490
id = assistant.applyCurrentNamespace(id);
491491

492-
MappedStatement keyStatement = configuration.getMappedStatement(id);
492+
MappedStatement keyStatement = configuration.getMappedStatement(id, false);
493493
SelectKeyGenerator answer = new SelectKeyGenerator(keyStatement, executeBefore);
494494
configuration.addKeyGenerator(id, answer);
495495
return answer;

src/main/java/org/apache/ibatis/builder/xml/XMLStatementBuilder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ public void handleNode(XNode nodeToHandle, List<SqlNode> targetContents) {
148148

149149
id = builderAssistant.applyCurrentNamespace(id);
150150

151-
MappedStatement keyStatement = configuration.getMappedStatement(id);
151+
MappedStatement keyStatement = configuration.getMappedStatement(id, false);
152152
configuration.addKeyGenerator(id, new SelectKeyGenerator(keyStatement, executeBefore));
153153
}
154154
}

src/main/java/org/apache/ibatis/session/Configuration.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -400,7 +400,12 @@ public void addIncompleteCacheRef(CacheRefResolver incompleteCacheRef) {
400400
}
401401

402402
public MappedStatement getMappedStatement(String id) {
403-
buildAllStatements();
403+
return this.getMappedStatement(id, true);
404+
}
405+
public MappedStatement getMappedStatement(String id, boolean validateIncompleteStatements) {
406+
if (validateIncompleteStatements) {
407+
buildAllStatements();
408+
}
404409
return mappedStatements.get(id);
405410
}
406411

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package org.apache.ibatis.submitted.xml_external_ref;
2+
3+
import java.util.Map;
4+
5+
public interface InvalidWithInsertMapper {
6+
Map<?, ?> selectAll();
7+
void insert(Person person);
8+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
3+
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
4+
<mapper namespace="org.apache.ibatis.submitted.xml_external_ref.InvalidWithInsertMapper">
5+
<sql id="personColumnList">
6+
person_id, person_name
7+
</sql>
8+
<select id="selectAll" resultType="java.util.Map">
9+
SELECT
10+
<include refid="wrongId" />
11+
FROM person
12+
</select>
13+
14+
<insert id="insert" parameterType="java.util.Map">
15+
INSERT INTO Person (person_name)
16+
VALUES (#{name})
17+
<selectKey>
18+
SELECT IDENTITY()
19+
</selectKey>
20+
</insert>
21+
</mapper>

src/test/java/org/apache/ibatis/submitted/xml_external_ref/XmlExternalRefTest.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,18 @@ public void testFailFastOnBuildAll() throws Exception {
4444
}
4545
configuration.getMappedStatementNames();
4646
}
47+
48+
@Test(expected = BuilderException.class)
49+
public void testFailFastOnBuildAllWithInsert() throws Exception {
50+
Configuration configuration = new Configuration();
51+
try {
52+
configuration.addMapper(InvalidWithInsertMapper.class);
53+
configuration.addMapper(InvalidMapper.class);
54+
} catch (Exception e) {
55+
fail("No exception should be thrown before parsing statement nodes.");
56+
}
57+
configuration.getMappedStatementNames();
58+
}
4759

4860
@Test
4961
public void testMappedStatementCache() throws Exception {

0 commit comments

Comments
 (0)