今天在Mapper.xml文件寫查詢語句報了個奇怪的錯誤
Caused by: org.apache.ibatis.builder.BuilderException: Error creating document instance. Cause: org.xml.sax.SAXParseException; lineNumber: 30; columnNumber: 45; 元素內容必須由格式正確的字符數據或標記組成。
元素內容必須由格式正確的字符數據或標記組成
當時我的代碼如下
- <!-- 查詢7天的數據 -->
- <if test="param.day =='1'">
- AND DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= SEARCH_TIME
- </if>
原因 : Mapper.xml 文件里 < (小於)號 , >(大於)號 ,會被認為是括號,需要額外注意,
解決辦法 : 將 < 號換成 < > 號 換成>
- <if test="param.day =='1'">
- AND DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= SEARCH_TIME
- </if>
接下來就不報錯了,但是我發現判斷 <if test="param.day =='1'">失敗,沒有進入到if里
原因 :在xml文件直接判斷 ' != ' 是可以的 ,判斷 ' == ' 會發生沖突
解決辦法 : <if test="param.day =='1'.toString()"> 在判斷的參數后加上toString()方法;