isNull判断property字段是否是null,用isEmpty更方便,包含了null和空字符串

例子一:
isEqual相当于equals,数字用得多些,一般都是判断状态值
<isEqual property="state" compareValue="0">
< /isEqual>

<isEqual property="state" compareProperty="nextState">
< /isEqual>

例子一:

传入的map或者类的属性name等于"1"吗,是就附加and和vvvv = '哈哈'
<isEqual property="name" compareValue="1" prepend="and">
vvvv = '哈哈'
< /isEqual>

传入的map或者类的属性name是null吗,是就附加and和vvvv = null
< isNull property="name" prepend="and">
vvvv = null
< /isNull>

我的应用:

###说明

  1. 1.         功能描述

用户可自行设置部分非重要弹出公告的设置。

  1. 2.         功能需求

1)         允许用户自行屏蔽“返销公告”,“银行存款通知”,“在线存款通知”三种类型公告。

2)         可在以上三种公告弹出页面上使用复选框设置不再通知此类公告。

  1. 3.         界面需求

1)         弹出公告页:

在“返销公告”( 25 ),“银行存款通知”( 63 )及“在线存款通知”( 64 )三种类型公告页面上增加复选框“不再弹出此类公告”。

2)         公告提示设置:

可直接对以上三种公告进行屏蔽设置(开启 10| 关闭11)。

  1. 4.         业务流程

 

  1. 5.         逻辑需求

用户存储屏蔽状态存储于 t_bussiness_set 中的“返销公告屏蔽”( sale_back ),“银行存款通知”(remittance_bank ),“在线存款通知”( remittance_online )字段。

  1. 6.         性能需求
  1. 7.         相关模块
  1. 8.         数据库相关表

1)         T_bussiness_set                                  商户设置表

2)         T_notice                                                 公告表

1.sqlMap

  1. <select id="querySingleModelByOut"  parameterClass="com.hanpeng.base.phone.model.TBussinessNotice"
  2. resultClass="com.hanpeng.base.phone.model.TBussinessNotice">
  3. select * from (select row_.*, rownum rownum_ from (
  4. SELECT
  5. i.NOTICE_NUM  as noticeNum ,
  6. i.BUSSINESS_ID  as bussinessId ,
  7. i.STATE  as state ,
  8. i.READ_DATE  as readDate ,
  9. n.NOTICE_TITLE as noticeTitle ,
  10. n.NOTICE_INFO as noticeInfo ,
  11. n.CREATE_DATE as createDate ,
  12. n.EMPLOYEE_ID as employeeId ,
  13. n.NOTICE_TYPE as noticeType ,
  14. n.NOTICE_SHOW_TYPE as noticeShowType ,
  15. n.FINISH_DATE as finishDate ,
  16. n.PUBLISH_DATE as publishDate
  17. FROM  T_BUSSINESS_NOTICE i left join T_NOTICE n on n.NOTICE_NUM = i.NOTICE_NUM
  18. WHERE
  19. n.PUBLISH_DATE &lt;= sysdate AND n.FINISH_DATE &gt;= sysdate
  20. <isNotEmpty prepend=" AND " property="bussinessId">
  21. i.BUSSINESS_ID = #bussinessId# </isNotEmpty>
  22. <isNotEmpty prepend=" AND " property="state">
  23. i.STATE = #state# </isNotEmpty>
  24. <isNotEmpty prepend=" AND " property="noticeShowType">
  25. n.NOTICE_SHOW_TYPE = #noticeShowType# </isNotEmpty>
  26. <isEqual property="saleBack" compareValue="10" prepend=" AND ">
  27. n.NOTICE_TYPE!='25'</isEqual>
  28. <isEqual property="remittanceBank" compareValue="10" prepend=" AND ">
  29. n.NOTICE_TYPE!='63'</isEqual>
  30. <isEqual property="remittanceOnline" compareValue="10" prepend=" AND ">
  31. n.NOTICE_TYPE!='64'</isEqual>
  32. )row_ where rownum &lt;=1 ) where rownum_&gt;=0
  33. </select>

2.Action

  1. /**
  2. * 查询公告弹出
  3. * @return
  4. * @author wwy
  5. * @date 2011-10-13 下午13:35:11
  6. */
  7. public void queryByOut(){
  8. try {
  9. PrintWriter out = this.getResponse().getWriter();
  10. if(getUserId() != null){
  11. bussinessNotice = noticeService.selectSingleModelByOut("26",getUserId());
  12. if(bussinessNotice==null){
  13. out.print("");
  14. }
  15. else{
  16. out.print("{\"noticeNum\":\""+bussinessNotice.getNoticeNum()+"\"}");
  17. }
  18. }else{
  19. out.print("");
  20. }
  21. } catch (Exception e) {
  22. log.error("弹出式公告查询失败" + e.fillInStackTrace());
  23. }
  24. }

3.serviceImpl

  1. public TBussinessNotice selectSingleModelByOut(String state,
  2. String bussinessId) {
  3. TBussinessNotice tbn = new TBussinessNotice();
  4. tbn.setBussinessId(bussinessId);
  5. tbn.setState("17");
  6. tbn.setNoticeShowType(state);
  7. TBussinessSet bussinessSet = BussinessSetService.queryById(bussinessId);//设置状态,sqlMap根据状态isEqual判断
  8. tbn.setSaleBack(bussinessSet.getSaleBack());
  9. tbn.setRemittanceBank(bussinessSet.getRemittanceBank());
  10. tbn.setRemittanceOnline(bussinessSet.getRemittanceOnline());
  11. return bussinessNoticeDao.selectSingleModelByOut(tbn);
  12. }

4.frameTop.jsp

  1. <script type="text/javascript">
  2. //弹出公告查询
  3. var autoNotice = setInterval(getNotice,1000*60);
  4. function getNotice(){
  5. clearInterval(autoNotice);
  6. $.ajax({
  7. type:'post',
  8. url:'Notice_queryByOut',
  9. dataType:'json',
  10. success:function(data){
  11. if(data!=null){
  12. $.hpDialog.open('Notice_detailByNotice?initLoadMethod=c&id='+data.noticeNum);
  13. }else{
  14. autoNotice = setInterval(getNotice,1000*60);
  15. }
  16. }
  17. });
  18. }
  19. function noticeCallback(){
  20. getNotice();
  21. }
  22. </script>

5.noticeDetail.jsp

  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head>
  5. <title>公告明细</title>
  6. <meta http-equiv="X-UA-Compatible" content="IE=7" />
  7. <%@ include file="/cssBasePage.jsp"%>
  8. <script type="text/javascript" src="<%=path %>/jsp/phone/interaction/notice/noticeDetail.js"></script>
  9. </head>
  10. <body>
  11. <form id="form1">
  12. <div class="jf_tanchu">
  13. <div class="jf_tanchutit">${ bussinessNotice.noticeTitle}</div>
  14. <div class="jf_tanchubox">
  15. <div class="jf_tanchubox_right">
  16. 公告类型:<v:dcolor code="${ bussinessNotice.noticeType}"/>&nbsp;&nbsp;&nbsp;&nbsp;
  17. 发布时间:<fmt:formatDate value="${ bussinessNotice.createDate}" pattern="yyyy-MM-dd"/>
  18. </div>
  19. ${bussinessNotice.noticeInfo}
  20. </div>
  21. </div>
  22. <s:if test="bussinessNotice.noticeType=='25'||bussinessNotice.noticeType=='63'||bussinessNotice.noticeType=='64'">
  23. <div>
  24. <input type="hidden" name="noticeType" value="${bussinessNotice.noticeType}"/>
  25. <input type="checkbox" id="isSelect" name="isSelect" value="${bussinessNotice.noticeType}" onclick="javascript:noTips();"/>
  26. <label for="isSelect">不再通知此类公告</label>
  27. </div>
  28. </s:if>
  29. </form>
  30. <div class="jf_tanchubot">
  31. <s:if test="initLoadMethod == \"c\" ">
  32. <hp:HpButton TJsClick="var win = $.dialog.open.origin;win.noticeCallback();$.dialog.close();" TValue="confirmed" id=""></hp:HpButton>
  33. </s:if>
  34. <s:else>
  35. <hp:HpButton TJsClick="$.dialog.close();" TValue="close" id=""></hp:HpButton>
  36. </s:else>
  37. </div>
  38. </body>
  39. </html>

6.noticeDetail.js

    1. function noTips(){
    2. var formParam = $("#form1").serialize();
    3. $.ajax({
    4. type:'post',
    5. url:'Notice_noTipsNotice',
    6. data:formParam,
    7. cache:false,
    8. dataType:'json',
    9. success:function(data){
    10. }
    11. });
    12. }

ibatIs中的isNotNull、isEqual、isEmpty的更多相关文章

  1. ibatis 中isNull, isNotNull与isEmpty, isNotEmpty区别

    在iBATIS中isNull用于判断参数是否为Null,isNotNull相反 isEmpty判断参数是否为Null或者空,满足其中一个条件则其true isNotEmpty相反,当参数既不为Null ...

  2. 【转】ibatis 中isNull, isNotNull与isEmpty, isNotEmpty区别

    转自:http://blog.csdn.net/fanfanjin/article/details/6676566 在iBATIS中 isNull用于判断参数是否为Null,isNotNull相反 i ...

  3. ibatis中的符号#跟$区别

    昨天一个项目中在写ibatis中的sql语句时,order by #field#, 运行时总是报错,后来上网查了查,才知道这里不该用#,而应该用$,随即查了下#与$的区别.  总结如下:  1.#是把 ...

  4. IBATIS中‘$’与‘#’使用

    IBATIS中关于iterate和‘$’与‘#’的应用 一个包含List元素的HashMap参数赋给sqlMap  public int getCountById(String id, String ...

  5. ibatis中使用List作为传入参数的使用方法及 CDATA使用

    ibatis中list做回参很简单,resultClass设为list中元素类型,dao层调用: (List)getSqlMapClientTemplate().queryForList(" ...

  6. ibatis中的$和#的区别

    介绍 在Ibatis中我们使用SqlMap进行Sql查询时需要引用参数,在参数引用中遇到的符号#和$之间的区分为,#可以进行与编译,进行类型匹配,而$不进行数据类型匹配,例如: select * fr ...

  7. ibatis中使用缓存

    简单在ibatis中使用cache 首先设置SqlMapConfig.xml中<settings/>节点的属性cacheModelsEnabled="true"     ...

  8. ibatis中#和$如何当作字符使用?

      1.情景展示 在plsql中,可以正常执行 但是在ibatis的sqlMap文件中,报错信息如下: 2.原因分析 ibatis中 #.$ 是功能符号,用来取值的,当sql中出现这类字符时便会造成冲 ...

  9. Spark中的IsNotNull函数怎么用

    Spark中的IsNotNull函数怎么用 在这里看到的这个函数,就是判断是否为空,但是开始不知道怎么用,后来找到了,要在View中用,也就是SparkSQL中.如下: spark.sql(" ...

随机推荐

  1. array numpy 模块

    高级用法:http://www.jb51.net/article/87987.htm from array import * 调用 array 与 import numpy as np  调用 np. ...

  2. maven tomcat7 远程热部署

    在maven项目开发中,一般推荐使用jetty进行开发调试.但是在项目发布的时候要求使用tomcat7作为发布服务器,为此在maven中配置了tomcat7插件,以支持项目在外部tomcat7进行远程 ...

  3. Mysql操作日志

    任何一种数据库中,都有各种各样的日志.MySQL也不例外,在Mysql中有4种不同的日志.分别错误日志.二进制日志.查询日志和慢查询日志.这些日志记录着Mysql数据库不同方面的踪迹.下文将介绍这4种 ...

  4. 【vs2010】转换到 COFF 期间失败: 文件无效或损坏

    不知怎么本来编译好好的VS2010环境,忽然出现“转换到COFF 期间失败:文件无效或损坏”的链接错误.花了好多天,试了好多方法,最终解决了这个问题. 现在罗列一下这几种解决方案: 方案1:      ...

  5. pyhon之函数参数

    #函数的参数分为形参和实参,其中形参就是形式参数,是在创建函数的时候定义,实参就是实际参数,是在调用的函数的时候创建,这个并不是重点,具体#的参数内部,我们可以把参数分为以下4种# 1.普通参数# 2 ...

  6. boost x64 lib

    libboost_atomic-vc150-mt-gd-x64-1_66.liblibboost_atomic-vc150-mt-s-x64-1_66.liblibboost_atomic-vc150 ...

  7. (重要)LRU cache

    [抄题]: [思维问题]: 需要从任何位置访问某数字有没有(重要 ),返回其位置(不重要),所以用hashmap. 需要从任何位置删除,用linkedlist.最终二者结合,用linked hashm ...

  8. phpcms如何给已有的模块添加新功能?

    phpcms如何给已有的模块添加新功能? 方法一:直接在模块里的控制器文件中添加功能. 不建议使用此方法,因为一旦phpcms升级,有可能会覆盖模块中的文件, 导致你添加的功能丢失. 方法二:新建一个 ...

  9. 【SQL模板】三.插入/更新 数据模板TSQL

    ---Name: 插入/更新 数据模板.sql ---Purpose: 用于更新 数据库中 历史数据 或 插入 新数据 的脚本模板 ---Author: xx ---Time: 2015-12-18 ...

  10. 【原创】有关Silverlight中自动生成的类中 没有WCF层edmx模型新加入的对象 原因分析。

      前端页面层:    编译老是不通过,报如下如所示错误:     -- 然后下意识的查了下 生成的cs文件,没有搜到根据edmx 生成的 对应的类.       结果整理: 1.尽管在 edmx 模 ...