日期:2014-05-17  浏览次数:20928 次

ibatis mysql转oracle问题
xml
<select id="getPagePrototypeStorage" resultClass="prototypeStorage" parameterClass="prototypeStorage">
      SELECT * FROM tb_prototype_storage where 1=1  
</sql>
java代码
sqlMapClient.queryForList("getPagePrototypeStorage",prototypeStorage);

以前用mysql能正常查询和分页,现在换成oracle后,提示:SQLSyntaxErrorException: ORA-00933: SQL 命令未正确结束

打印sql一看发现sql后面自动加上了 limit ?,?,可是我现在已经换成了oracle,如何才能让ibatis自动识别数据库呢?

------解决方案--------------------
<select id="getPagePrototypeStorage" resultClass="prototypeStorage" parameterClass="prototypeStorage">
      SELECT * FROM tb_prototype_storage where 1=1  
</sql>
结束标志怎么事</sql>,应该是</select>吧
------解决方案--------------------
mysql分页使用的是limit,而oracle使用的是rownum,你看看配置哪是不是没改过来
------解决方案--------------------
ibatis会根据配置的数据源自动识别数据库的 估计是你配置有问题 吧配置文件发出来看看
------解决方案--------------------
ibatis 没有这么智能的,需要手写,少年。
另外 既然用了ibatis 为什么还有这种 where 1=1  拼sql时代留下的丑陋东东?
------解决方案--------------------
引用:
ibatis会根据配置的数据源自动识别数据库的 估计是你配置有问题 吧配置文件发出来看看


扯淡呢,你开发的?有这么好早就淘汰Hibernate了。


------解决方案--------------------
看你发的</SQL>就知道,你那个limit(?,?)是事先写在一个类似<SQL id="paged">的节点里,然后用<sql id="paged"></sql>引到了主SQL语句后面,连自己的框架代码都认不全,你改什么?