iBatis怎样比较时间大小?数据库里格式为String
本帖最后由 xzs7190966 于 2012-12-12 17:18:40 编辑
<select id="queryPerByName" parameterClass="Personnel" resultClass="Personnel" >
select * from cms_personnel
<dynamic prepend="where">
<isNotEmpty prepend="and" property="name" >
name=#name#
</isNotEmpty>
<isNotEmpty prepend="and" property="s_time" >
<![CDATA[ s_time > '#s_time#' ]]>
</isNotEmpty>
<isNotEmpty prepend="and" property="e_time" >
<![CDATA[ e_time < '#e_time#' ]]>
</isNotEmpty>
</dynamic>
</select>
DEBUG http-8080-5 - {conn-100054} Preparing Statement: select * from cms_personnel where s_time > "?"
DEBUG http-8080-5 - Fetching JDBC Connection from DataSource
DEBUG http-8080-5 - Returning JDBC Connection to DataSource
com.ibatis.common.jdbc.exception.NestedSQLException:
--- The error occurred while applying a parameter map.
--- Check the sum_queryPerByName-InlineParameterMap.
--- Check the parameter mapping for the 's_time' property.
--- Cause: java.sql.SQLException: No parameters defined during prepareCall()
at com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.executeQueryWithCallback(MappedStatement.java:201)
at com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.executeQueryForObject(MappedStatement.java:120)
at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForObject(SqlMapExecutorDelegate.java:518)
at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForObject(SqlMapExecutorDelegate.java:493)
at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForObject(SqlMapSessionImpl.java:106)
at com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.queryForObject(SqlMapClientImpl.java:82)
at com.base.dao.BaseDao.queryforlist(BaseDao.java:198)
[解决办法]
format下再传进去。
[解决办法]
你s_time的属性映射类型是什么
数据库是varchar的只能是String。数据库是date的可以是String也可以是Date
[解决办法]
用对应的数据库的函数呀,这个什么的,就跟你正常些SQL一样呀。如果手oracle的话可以直接比较(如果没有记错的话)。如todate
[解决办法]
<isNotEmpty prepend="and" property="name" >
name=#name#
</isNotEmpty>
where之后的第一个条件是不是需要prepend and呢?
[解决办法]