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. JFR 与 JProfilter Jvmisualvm

    只有JFR 是可以在生产环境使用  采用C++独立写的采样手机功能 而 JProfilter/JVisualvm 都只能在测试环境下使用 使用instrument 机制 ,还有debug 框架 最早是 ...

  2. Linux就业技术指导(二):简历项目经验示例

    一,期中项目经验示例 1.1 新服务器上线搭建系统环境 1,根据现有结构部署工具(PXE+kickstart) 2,结合应用系统需求定制部署模版 3,制作系统优化等一键执行脚本 4,自动化部署实施 5 ...

  3. 如何用INNO安装添加快捷启动方式到Win7的快速启动栏(超级任务栏)

    问题:如何用INNO安装添加快捷启动方式到Win7的快速启动栏(超级任务栏) 在XP下,添加方式是直接把快捷方式复制到%appdata%\Microsoft\Internet Explorer\Qui ...

  4. hdoj Max Sum Plus Plus(DP)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1024 题意:----最大M子段和问题给定由 n个整数(可能为负整数)组成的序列a1,a2,a3,……, ...

  5. clamp 函数

    返回范围内的一个数值.可以使用 clamp 函数将不断增加.减小或随机变化的数值限制在一系列的值中. float clamp(float minnumber, float maxnumber, flo ...

  6. android:cmd下面用adb打log

    进入cmd命令行,启动adb 1.用adb打log:adb logcat 2.过滤log信息:adb logcat | findstr ***   这里的***就是你需要设置的过滤项,如myscan ...

  7. python的进程间的数据交互

    #先来看下如何实现多进程 # multiprocessing 这个是python的多进程的模块,我们会用到这个模块的很多方法 from multiprocessing import Process i ...

  8. iOS - OC - JSON 解析 - NSJSONSerialization

    #import "ViewController.h" @interface ViewController () @end @implementation ViewControlle ...

  9. 在CentOS7上部署Kubernetes集群

    在CentOS7上部署Kubernetes集群 文/FCBusquest 2015-12-22 18:36:00 简介 Kubernetes(k8s)是Google开源的大规模容器集群管理系统, 本文 ...

  10. nginx反向代理部署与演示(二)

    我们把LB01作为负载均衡器,WEB01和WEB02作为两台web服务器.   WEB01与WEB02虚拟主机配置如下:   我们修改nginx下的conf/nginx.conf文件,在http{}中 ...