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. intellij idea14 +svn配置

    说明:使用TortoiseSVN客户端,安装时必须选择client tools,否则不会有svn.exe,也就不能支持intellij idea的svn插件,因为intellij idea是使用命令行 ...

  2. 使用JSON.parse()转化成json对象需要注意的地方

    http://blog.csdn.net/u011277123/article/details/53055479 有三种方法: var str = '{"name":"小 ...

  3. 有几个Pass,对象就会绘制几次

    在每个SubShader内部可以包含多个,至少一个Pass.有几个Pass,对象就会绘制几次.在编写时我们应该尽量控制Pass的数量. 在Pass中包含Cg/HLSL程序片段,在其中编写vertex ...

  4. VMware虚拟机安装Centos预安装环境图文教程1

    前言: 习惯了微软的各种可视化开发软件环境,突然接触Linux命令式的操作环境,总是会让人有些反感跟抵触的. 经过了几天的研究,发现Linux也并不是那么的深不可测.在配置网站部署环境的时候,系统集成 ...

  5. sqlserver2008debug存储过程

    新建一个查询窗口,exec proc_name params…… 然后启动调试 右侧可以选择“逐过程”“逐语句”“跳出”,下方展示变量的值 参考文章:https://www.cnblogs.com/s ...

  6. 机械硬盘怎么看是否4k对齐

    在XP.VISTA.win7系统下,点击“开始”,“运行”,输入“MSINFO32”,点击“确定”,出现如下显示的界面,依次点击“组件/存储/磁盘”,查看“分区起始偏移”的数值,如果不能被4096整除 ...

  7. 240. Search a 2D Matrix II&&74. Search a 2D Matrix 都用不严格递增的方法

    一句话思路:从左下角开始找.复杂度是o(m+n). 一刷报错: 应该是一个while循环中有几个条件判断语句,而不是每个条件判断语句里去加while,很麻烦 数组越界了.从0开始,y的最大条件应该是& ...

  8. Linux ld命令

    一.简介 http://blog.sina.com.cn/s/blog_a0dc7dcf01014c5s.html 二.选项 http://blog.sina.com.cn/s/blog_a0dc7d ...

  9. Mint UI 之 Swipe 组件

    #为什么不显示内容? 一定要指定 mt-swipe 元素的宽和高. <mt-swipe :auto="4000" class="swipe"> &l ...

  10. db2学习笔记

    a.服务端安装 v11.1_win64_expc.zip 官网下载 b.客户端安装 Toad for DB2 Freeware 6.1 百度找找 .建数据库 create database HRA_G ...