日期:2014-05-16  浏览次数:20681 次

ibatis 在mysql上面的调试遇到的问题集锦

(1)? Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Every derived table must have its own alias
?表明嵌套的select语句生成的结果集必须被括号包围,并且声明别名。

?

(2) 动态标签dynamic

动态的一元标签dynamic隐式地具有值为true的removeFirstPrepend属性,那么在其所包含的内容体的第一个条件所含有的prepend属性值会被忽略,但是需要写成<dynamic prepend=" WHERE ">, 而不能写成WHERE <dynamic>, 并且如果所嵌套的内容体不含prepend属性的条件,不会被计算在内。

示例1: 正确

<dynamic prepend=" WHERE " >
? <isNotEmpty prepend=" AND " property="x">
? ?? x = #x#
? </isNotEmpty>

? <isNotEmpty prepend=" AND " property="y">
? ?? y = #y#
? </isNotEmpty>

</dynamic>

?

示例2: 错, 会生成where and x=?的错误SQL语句

WHERE

<dynamic >
? <isNotEmpty prepend=" AND " property="x">
? ?? x = #x#
? </isNotEmpty>

? ? <isNotEmpty prepend=" AND " property="y">
? ?? y = #y#
? </isNotEmpty>

</dynamic>

?

示例3: 错, 会生成where x=? y=? 的错误SQL语句

<dynamic prepend=" WHERE " >

? <isNotEmpty property="x">
? ?? x = #x#
? </isNotEmpty>

? ? <isNotEmpty prepend=" AND " property="y">
? ?? y = #y#
? </isNotEmpty>

</dynamic>

?