org.apache.ibatis.builder.BuilderException: Could not find value method on SQL annotation
轉載自??mybatis 注解引發的bug,org.apache.ibatis.builder.BuilderException: Could not find value method on SQL anno
Mybatis用注解開發且還用script標簽
這種bug,網上一搜一大堆,但是都xml方式開發,大部分說的是返回類型或者入參類型對不上,而我是注解式開發。
先貼寫出來的sql:
@Select({"<script>"," select * "," ? from table t"," ? ?AND f.created_at >= to_date(#{paramMap.startDate}, 'yyyyMMddhh24miss')"," ? ?AND f.created_at <= to_date(#{paramMap.endDate}, 'yyyyMMddhh24miss')","</script>" })
解決方法:把上面 ?的 ?< ?換成轉義字符 <?就有ok了。
主要的表跟字段還有沒有出錯的where條件我已經簡寫了。這種注解式開發,如果加上script標簽,代表該條sql以xml解析的方式解析映射,xml解析方式大家應該都知道,< ?或者 ?> ?應該都用轉義字符,但是這里看起來是個String沒在意,導致這個bug。最坑的不是這個,而且pom文件里的mybatis相關的jar包的版本也有點問題,在啟動的時候不會報錯,能啟動成功,但是在你services調用dao層的時候就會報這個錯。后來我把mybatis相關的jar版本指定了一個,在啟動的時候就會報錯,啟動不成功,報的錯誤就是你那個dao文件解析失敗,就是這個錯誤:
org.apache.ibatis.builder.BuilderException: Could not find value method on SQL annotation. ?Cause: org.apache.ibatis.builder.BuilderException: Error creating document instance. ?Cause: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1807; The content of ?elements must consist of well-formed character data or markup.
?
總結
以上是生活随笔為你收集整理的org.apache.ibatis.builder.BuilderException: Could not find value method on SQL annotation的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何打印工作表的批注如何打印批注
- 下一篇: PL/SQL之JOB用法 (定时跑数据)