I am having trouble resolving fragments. I suspect the problem is that MySuperMapper.xml contains references to fragments defined in MyMapper.xml, but MySuperMapper.xml is parsed first, since the MyMapper interface extends MySuperMapper.
Exception in thread "main" org.apache.ibatis.builder.IncompleteElementException: Could not find SQL statement to include with refid 'mypackage.MySuperMapper.myFragment'
at org.apache.ibatis.builder.xml.XMLIncludeTransformer.findSqlFragment(XMLIncludeTransformer.java:62)
at org.apache.ibatis.builder.xml.XMLIncludeTransformer.applyIncludes(XMLIncludeTransformer.java:37)
at org.apache.ibatis.builder.xml.XMLIncludeTransformer.applyIncludes(XMLIncludeTransformer.java:50)
at org.apache.ibatis.builder.xml.XMLStatementBuilder.parseStatementNode(XMLStatementBuilder.java:83)
at org.apache.ibatis.session.Configuration.buildAllStatements(Configuration.java:697)
at org.apache.ibatis.session.Configuration.hasStatement(Configuration.java:667)
at org.apache.ibatis.session.Configuration.hasStatement(Configuration.java:662)
at org.apache.ibatis.binding.MapperMethod$SqlCommand.<init>(MapperMethod.java:175)
at org.apache.ibatis.binding.MapperMethod.<init>(MapperMethod.java:38)
at org.apache.ibatis.binding.MapperProxy.cachedMapperMethod(MapperProxy.java:49)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:42)
at com.sun.proxy.$Proxy31.selectAll(Unknown Source)
Caused by: java.lang.IllegalArgumentException: XML fragments parsed from previous mappers does not contain value for mypackage.MySuperMapper.myFragment
at org.apache.ibatis.session.Configuration$StrictMap.get(Configuration.java:790)
at org.apache.ibatis.builder.xml.XMLIncludeTransformer.findSqlFragment(XMLIncludeTransformer.java:58)
... 15 more
Apparently, "XML fragments parsed from previous mappers" is the name of the StrictMap.