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

iBatis怎的比较时间大小?数据库里格式为String

2012-12-28 
iBatis怎样比较时间大小?数据库里格式为String本帖最后由 xzs7190966 于 2012-12-12 17:18:40 编辑select

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)



这是我的代码 用name可以查询   但是如果用时间查询就报错  我用sql语句去mysql查询却可以直接查出数据,为什么在ibatis下不行?   或者是String不能比较大小?那什么我去mysql能查到数据呢?


[解决办法]
format下再传进去。
[解决办法]
你s_time的属性映射类型是什么
数据库是varchar的只能是String。数据库是date的可以是String也可以是Date
[解决办法]
用对应的数据库的函数呀,这个什么的,就跟你正常些SQL一样呀。如果手oracle的话可以直接比较(如果没有记错的话)。如todate
[解决办法]
<isNotEmpty prepend="and" property="name" >
             name=#name#
</isNotEmpty>

where之后的第一个条件是不是需要prepend and呢?
[解决办法]

引用:
用对应的数据库的函数呀,这个什么的,就跟你正常些SQL一样呀。如果手oracle的话可以直接比较(如果没有记错的话)。如todate


+1
[解决办法]
可以比较,是你值没传过来吧,<![CDATA[   s_time >  '#s_time#' ]]>  不用加引号了吧 <![CDATA[   s_time >  #s_time# ]]>,你试试

热点排行