2014-11-02 2 views
2

В файле mybatis mapper для оператора select sql Я не могу использовать специальные символы (< =) в выражениях. Например (упрощенная выберите):mybatis mapper escape-символы файла

<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 –

+0

Другой вариант - кодированные символы. например: 'colName < 2 ИЛИ colName > 10' – indivisible

Смежные вопросы