mybatis通配符引用报错的问题XML fragments parsed from previous mappers does not contain value

来源:互联网 发布:今日特价淘宝网 编辑:程序博客网 时间:2024/06/07 19:50

写mapper A的时候,发现内容太长,于是把被引用的refid单独抽出来成为一个新的mapper文件,A中只保留了直接对外的接口申请了,于是就有了mapper B 文件。

在A文件里面引用B的sql,如:

     <include refid="B.where_1" />

结果报错:

org.apache.ibatis.builder.IncompleteElementException: Could not find SQL statement to include with refid 'A.where_2'
at org.apache.ibatis.builder.xml.XMLIncludeTransformer.findSqlFragment(XMLIncludeTransformer.java:104)
at org.apache.ibatis.builder.xml.XMLIncludeTransformer.applyIncludes(XMLIncludeTransformer.java:64)
at org.apache.ibatis.builder.xml.XMLIncludeTransformer.applyIncludes(XMLIncludeTransformer.java:87)
at org.apache.ibatis.builder.xml.XMLIncludeTransformer.applyIncludes(XMLIncludeTransformer.java:75)
at org.apache.ibatis.builder.xml.XMLIncludeTransformer.applyIncludes(XMLIncludeTransformer.java:87)
at org.apache.ibatis.builder.xml.XMLIncludeTransformer.applyIncludes(XMLIncludeTransformer.java:48)
at org.apache.ibatis.builder.xml.XMLStatementBuilder.parseStatementNode(XMLStatementBuilder.java:88)
at org.apache.ibatis.session.Configuration.buildAllStatements(Configuration.java:760)

Caused by: java.lang.IllegalArgumentException: XML fragments parsed from previous mappers does not contain value for A.where_2
at org.apache.ibatis.session.Configuration$StrictMap.get(Configuration.java:860)
at org.apache.ibatis.builder.xml.XMLIncludeTransformer.findSqlFragment(XMLIncludeTransformer.java:101)
... 69 more


后来发现 B文件中B.where_1引用了<include refid="where_2" />,原来是在引用的时候没有加前缀,改成<include refid="B.where_2" />这样就可以了.


最终是这样的:

A文件:

    <select id="getCount" resultMap="BaseResultMap">
        select count(*)
        from X a

     <include refid="B.where_1" />

</select>
  

B文件:

<sql id="where_1">
where a.id =#{id,jdbcType=VARCHAR}

      <include refid="B.where_2" />     

</sql>

<sql id="where_2">

a.name =#{name,jdbcType=VARCHAR}

</sql>

B文件最开始where_1中引用where_2时没有加B.的前缀,所有报错了。原来where_1在引入到A文件后,直接把where_2也引用过去了,然后相当于是A文件引用的where_2.



0 0
原创粉丝点击