2014-11-02 85 views
2

在用於sql select語句的mybatis映射器文件中,我無法在表達式中使用特殊字符(< =)。對於實施例(一個簡化的選擇):mybatis映射器文件轉義字符

<select id="selectMonday" resultType="SheetGameRec"> 
    select ColumnName 
    from Table 
    where ColumnName <= 2 
    order by ColumnName; 
</select> 

生成以下錯誤

Exception in thread "main" org.apache.ibatis.exceptions.PersistenceException: 
### Error building SqlSession. 
### The error may exist in Mapper.xml 
### Cause: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper 

Configuration. Cause: org.apache.ibatis.builder.BuilderException: Error creating document instance. Cause: org.xml.sax.SAXParseException; lineNumber: xx; columnNumber: xx; The content of elements must consist of well-formed character data or markup. 

如果我更換< =具有> =或=,映射器文件將工作,雖然這不是選擇我想要的。

如何逃避這些特殊字符。我也遇到過其他表達式的問題,例如&。我正在使用mybatis 3.0.2。

謝謝。

回答

8

您可以使用CDATA來轉義特殊字符。

<select id="selectMonday" resultType="SheetGameRec"> 
    select ColumnName 
    from Table 
    where ColumnName <![CDATA[ <= 2 ]]> 
    order by ColumnName; 
</select> 
+1

您還可以顛倒參數的順序:2> = ColumnsName – 2015-11-02 13:49:27

+0

另一個選項是編碼的字符。例如:colName < 2或colName > 10' – indivisible 2016-10-21 11:50:48