<statement id="searchMessage" parameterClass="entity.SearchInfo" resultClass="entity.MessageInfo">
select * from messageInfo
<dynamic prepend="where">
<isNotEmpty prepend="and" property="userName">
userName=#userName#
</isNotEmpty>
</dynamic>
</statement>entity.SearchInfo里有从网页空间收集的姓名、开始日期、结束日期
String userName、String fromDate、String toDate;
请问怎么写后两个开始日期与结束日期的组合语句?

解决方案 »

  1.   

    java:
    Date stDate=从页面取得的时间转化为Date        <isNotEmpty prepend="and" property="stDate">
        <![CDATA[ stDate >= #stDate# ]]>
            </isNotEmpty>
            <isNotEmpty prepend="and" property="endDate">
        <![CDATA[ endDate<= #endDate# ]]>
            </isNotEmpty>
      

  2.   

    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
    Date stDate =dateFormat.parse(fromDate);
      

  3.   

       <dynamic prepend="where" removeFristPrepend="true">
            <isNotEmpty prepend="and" property="userName">
                userName=#userName#
            </isNotEmpty>
             <isNotEmpty prepend="and" property="fromDate">
                Date>#fromDate#
            </isNotEmpty>
             <isNotEmpty prepend="and" property="toDate">
             <![CDATA[
                Date<#toDate#
               ]]>
            </isNotEmpty>
        </dynamic>
    把你的fromDate和toDate用simpleDateFormat格成Date传进去,  Map map=new HashMap();
        map.put("userName",userName);
        map.put("fromDate",tools.parse(fromDate));
        map.put("toDate",tools.parse(toDate));
        sqlMapClient.queryForList("searchMessage",map);这样就可以了(Date为date型)。
      

  4.   


    <statement id="searchMessage" parameterClass="entity.SearchInfo"
    resultClass="entity.MessageInfo">
    select * from messageInfo
    <dynamic prepend="where">
    <isNotEmpty prepend="and" property="userName">
    userName=#userName#
    </isNotEmpty>
    <isNotEmpty prepend="and" property="fromDate">
    <![CDATA[dateTime>=to_date('#fromDate#','YYYY-MM-DD hh:mi:ss')]]>
    </isNotEmpty>
    <isNotEmpty prepend="and" property="toDate">
    <![CDATA[dateTime<=to_date('#toDate#','YYYY-MM-DD hh:mi:ss')]]>
    </isNotEmpty>
    </dynamic>
    </statement>我写成这样,控制台输出
    Executing Statement:    select * from messageInfo where dateTime>=to_date('?','YYYY-MM-DD hh:mi:ss') and dateTime<=to_date('?','YYYY-MM-DD hh:mi:ss')         
    Parameters: [2008-10-16 02:37:47, 2008-10-19 02:47:38]
    Types: [java.lang.String, java.lang.String]
    后报错java.sql.SQLException: ORA-01006: 赋值变量不存在
      

  5.   

    呵呵 ,我这没装oracle,不过你可能试下用$$替换##,
      

  6.   

    to_date('?'尽量不要使用数据库特性,用标准sql如我在一楼所述to_date('$fromDate$',略
      

  7.   

    推荐1,2楼的做法或者改成 <![CDATA[dateTime>=to_date(#fromDate#,'YYYY-MM-DD hh24:mi:ss')]]>
      

  8.   

    http://blog.csdn.net/sunyujia/archive/2008/04/21/2313302.aspx用#是预编译是jdbc驱动要干的事情
    而$是ibatis框架干的事情把串拼好后传给jdbc驱动