Java 生成文件中的MyBatis异常
我使用MyBatis Generator 1.3.1创建了一个Mapper.xml文件。MyBatis解析映射程序文件时,会引发BuilderException:Java 生成文件中的MyBatis异常,java,generator,mybatis,Java,Generator,Mybatis,我使用MyBatis Generator 1.3.1创建了一个Mapper.xml文件。MyBatis解析映射程序文件时,会引发BuilderException: Exception in thread "main" org.apache.ibatis.builder.BuilderException: Unknown element <#comment> in SQL statement. at org.apache.ibatis.builder.xml.XMLStatem
Exception in thread "main" org.apache.ibatis.builder.BuilderException: Unknown element <#comment> in SQL statement.
at org.apache.ibatis.builder.xml.XMLStatementBuilder.parseDynamicTags(XMLStatementBuilder.java:83)
at org.apache.ibatis.builder.xml.XMLStatementBuilder.parseStatementNode(XMLStatementBuilder.java:43)
at org.apache.ibatis.session.Configuration.parseStatementNodes(Configuration.java:513)
at org.apache.ibatis.session.Configuration.buildStatementsForNamespace(Configuration.java:502)
at org.apache.ibatis.session.Configuration.buildStatementsFromId(Configuration.java:467)
at org.apache.ibatis.session.Configuration.getMappedStatement(Configuration.java:391)
at org.apache.ibatis.binding.MapperMethod.setupCommandType(MapperMethod.java:160)
at org.apache.ibatis.binding.MapperMethod.<init>(MapperMethod.java:48)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:37)
at $Proxy1.selectByExample(Unknown Source)
parseDynamicTags无法识别该字段。它正在解析的XML部分是selectByExample:
<select id="selectByExample" resultMap="BaseResultMap" parameterType="test.model.TblPosStageExample" >
<!-- WARNING - @mbggenerated .. -->
select
<if test="distinct" >
distinct
</if>
<include refid="Base_Column_List" />
from tbl_Pos_Stage
<if test="_parameter != null" >
<include refid="Example_Where_Clause" />
</if>
<if test="orderByClause != null" >
order by ${orderByClause}
</if>
</select>
MyBatis似乎已经解析了第一条注释和select语句。它刚刚解析了text类型的节点,但我不确定注释来自何处
我还没有修改生成的文件,我感到困惑的是,它在过去是否正常工作,并突然停止
编辑:基本列列表
<sql id="Base_Column_List" >
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Wed Mar 23 08:04:42 EST 2011.
-->
SurrogatePK, businessDate, positionId, busAIdCode, {95 columns deleted for brevity}
marketValueCcy, settledMarketValueCcy
</sql>
下面是示例_where _子句
<sql id="Example_Where_Clause" >
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Wed Mar 23 08:04:42 EST 2011.
-->
<where >
<foreach collection="oredCriteria" item="criteria" separator="or" >
<if test="criteria.valid" >
<trim prefix="(" suffix=")" prefixOverrides="and" >
<foreach collection="criteria.criteria" item="criterion" >
<choose >
<when test="criterion.noValue" >
and ${criterion.condition}
</when>
<when test="criterion.singleValue" >
and ${criterion.condition} #{criterion.value}
</when>
<when test="criterion.betweenValue" >
and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
</when>
<when test="criterion.listValue" >
and ${criterion.condition}
<foreach collection="criterion.value" item="listItem" open="(" close=")" separator="," >
#{listItem}
</foreach>
</when>
</choose>
</foreach>
</trim>
</if>
</foreach>
</where>
</sql>
我已经找出了这个问题的原因。这与myBatis的生成过程无关 当我向Eclipse构建路径中添加一个实用程序包时,出现了这个问题,其中包括一个第三方库,其中包含许多旧的包。我怀疑有问题的包是一个旧的org.apache.xerces.parsers 我通过从头开始构建Eclipse项目并添加包和代码(一次一个)发现了错误
SQL语句中的运行时错误未知元素可以通过添加项目来复制,并通过从生成路径中删除项目来消除。我遇到了由非标准XML解析器引起的相同问题,我无法替换它。 我在上打开了一个问题,并附加了一个补丁。希望这将很快得到解决
编辑:问题已在r5388中得到解决。能否提供基本列列表和示例Where子句引用的xml?错误可能来自其中一个。@Clair,好的,我编辑了问题并添加了这些。对不起,没有什么突出的地方我建议修改查询以隔离哪里有问题,但您可能已经尝试过了。