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. 吴裕雄 数据挖掘与分析案例实战(8)——Logistic回归分类模型

    import numpy as npimport pandas as pdimport matplotlib.pyplot as plt # 自定义绘制ks曲线的函数def plot_ks(y_tes ...

  2. python -m

    影响sys.path python xxx.py python -m xxx.py 这是两种加载py文件的方式:1叫做直接运行2把模块当作脚本来启动 直接启动是把脚本所在的目录放到了sys.path属 ...

  3. idea 码云 项目上传

    1.点击导航栏 VCS -> Import into Version Control -> 托管项目到码云 2.输入码云帐号密码,点击login. 3.勾选private,点击托管按钮. ...

  4. EasyUI 列表展示及基本格式

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

  5. hdoj1078(介绍记忆化搜索及其模板)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1078 思路: 这是一道典型的记忆化搜索模板题. 先介绍记忆化搜索,本质是搜索+DP. 一般说来,动态规 ...

  6. nyoj1076-方案数量 【排列组合 dp】

    http://acm.nyist.net/JudgeOnline/problem.php?pid=1076 方案数量 时间限制:1000 ms  |  内存限制:65535 KB 难度:2   描述 ...

  7. 兼容谷歌、火狐、IE7.0以上浏览器div+css实现的带有蒙版的半透明弹窗效果[xyytit]

    整个页面变暗的蒙版效果,带有半透明边框的弹窗,用在网站里一定很酷. 最初见与奢饰品购物网站YMALL,后边研究了下,自己做了这个实例. 技术要点:css中几种透明样式的使用.不同的样式在不同的浏览器中 ...

  8. C++中纯虚函数

    1.纯虚函数 virtual ReturnType Function()= 0; 纯虚函数可以让类先具有一个操作名称,而没有操作内容,让派生类在继承时再去具体地给出定义.凡是含有纯虚函数的类叫做抽象类 ...

  9. windows下 Memcache cpu占用过高

    分析应该是memcache的内存大小还是默认配置,已经满足不了当前的大数据量的需要了,大量的新缓存需要进入,同时大量的旧缓存又需要被淘汰出来,一进一出导致CPU占用过多. 进入注册表,找到:HKEY_ ...

  10. Mina入门:mina版之HelloWorld[z]

    Mina入门:mina版之HelloWorld [z] 一,前言: 在完成上篇文章<Mina入门:Java NIO框架Mina.Netty.Grizzly简介与对比>之后,我们现在可以正式 ...