首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

ibatis中dynamic的一点异常,帮小弟我查下。多谢

2012-07-18 
ibatis中dynamic的一点错误,帮我查下。谢谢select idqueryPersonList parameterClassstaff resultCl

ibatis中dynamic的一点错误,帮我查下。谢谢
<select id="queryPersonList" parameterClass="staff" resultClass="staff">
  select * from test 
<dynamic prepend="where">
<isNotEmpty prepend="and" property="username">username=#username#</isNotEmpty>
<isNotEmpty prepend="and" property="password">password=#password#</isNotEmpty>
</dynamic> 
</select>
运行上面代码一直 报错ORA-00933:
但是如果这样写就没错,
<select id="queryPersonList" parameterClass="staff" resultClass="staff">
select * from test where test.username=#username# and test.password=#password#
</select>
为什么呢?应该怎么改啊?

[解决办法]

HTML code
在Ibatis中<dynamic/>是Ibatis的动态查询条件,根据该属性中所包含的元素进行判断是否执行某一条SQL语句。1、使用dynamic时select * from Person表        <dynamic prepend="where">                <isNotNull property="name" prepend="and">                    name=#name#                </isNotNull>                <isNotNull property="sex" prepend="and">                    sex=#sex#                </isNotNull>                      </dynamic>结果当name、sex都非null时打出如下的SQL语句:select Person表 where (and) name= ? , and sex= ?,很显然执行语句时,name前的and已经自动清除。2、不使用dynamic时select * from Person表                       <isNotNull property="name" prepend="and">                    name=#name#                </isNotNull>                <isNotNull property="sex" prepend="and">                    sex=#sex#                </isNotNull>          结果当name、sex都非null时打出如下的sql语句:select * Person表 where and name= ? , and sex= ?,出现语句错误。
[解决办法]
可能因为你and 或者 where 后面没加空格?或者啥的 最好把sql打印出来

热点排行