`
墙头上一根草
  • 浏览: 149169 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

mybatis中不能出现小于号

阅读更多

    今天写了一段语句,目的就是取得当前时间的秒数与表中的time做减法,然后取得一段时间内的数据,语句如下:

    

SELECT a.* from arena_report a,(SELECT TIMESTAMPDIFF(SECOND,'1970-1-1 8:0:0',NOW()) as currTime) b  
      	WHERE (a.roleId1=#{roleId} or a.roleId2=#{roleId}) AND b.currTime-a.time<604800 ORDER BY a.time desc LIMIT 20;

  这段语句在数据库中执行,是很正常的通过了  但是放在mybatis中,死就是通不过,加载的时候就会报出一段错误,“”The content of elements must consist of well-formed character data or markup“”, 意思就是xml的格式有问题,找了很久,都没有发现有什么问题,最后还是看到有网友说,是因为mybatis不支持“<”号,最后修改了一下 ,发现果然是的,不得不说,真变态啊  坑!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

     修改后的语句为:

     

SELECT a.* from arena_report a,(SELECT TIMESTAMPDIFF(SECOND,'1970-1-1 8:0:0',NOW()) as currTime) b  
      	WHERE (a.roleId1=#{roleId} or a.roleId2=#{roleId}) AND 604800>b.currTime-a.time ORDER BY a.time desc LIMIT 20;

 

  更新更新:

     感谢各位大大的指正 ,问题不是mybatis不支持“<”,而是xml不支持这个符号,这里我是误读了,也想当然了  ,可以看评论中各位的解释

0
5
分享到:
评论
7 楼 墙头上一根草 2016-11-01  
最近项目在上线  所以好久没上来了  这个确实是我研究不够透彻 造成了误解  多谢各位的指正哈 至于删不删除  就先不删除了吧  有可能和我遇到同样问题的  看到加的评论 就解决问题了
6 楼 Tyrion 2016-08-19  
...不是说不支持“<”
而是因为你用的是xml文件配置,内容里面有<符号XML解析器会把该字符解释为新元素的开始。
这种情况要么用&lt;转义,要么用CDATA告诉解析器进行解析的是文本数据,CDATA部分的所有内容都会被解析器忽略。
5 楼 add2ws 2016-08-19  
小于和大于号和xml里的尖括号冲突,应该用&lt;和&gt;代替。这类问题确实会坑不少新手
4 楼 hellotieye 2016-08-19  
楼主 mybatis 是可以使用小于号的 再好好学一下 没关系的
3 楼 hellotieye 2016-08-19  
somefuture 写道
楼主你确定不删除这篇文章吗

为什么 要删除
2 楼 somefuture 2016-08-19  
楼主你确定不删除这篇文章吗
1 楼 cs6641468 2016-08-19  
LZ建议你把基础打牢,我当年在研究xml规范(其中一部分就是关于特殊字符的处理)的时候,还不知道mybatis是啥玩意呢。

相关推荐

Global site tag (gtag.js) - Google Analytics