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. Zookeeper 注册中心

    一.Zookeeper的介绍 Zookeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用 ...

  2. mysql开通tcp远程连接

    1.登陆mysql: mysql -u root mysql 2.运行下面命令 UPDATE `mysql`.`user` SET `Host` = '%' WHERE `user`.`Host` = ...

  3. C# split分割多个字符

    string[] myAgent = agentInfo.Split(new string[] { "$#$" }, StringSplitOptions.None);

  4. luoguP1004 方格取数(四维DP)

    题目链接:https://www.luogu.org/problemnew/show/P1004 思路: 这道题是四维DP的模板题,与luoguP1006传纸条基本相似,用f[i][j][k][l]表 ...

  5. 第八章 高级搜索树 (a2)伸展树:双层伸展

  6. 【Python基础教程第2版】——第一讲:基础知识

    1.长字符串:(用三引号如'''或者"""来引起来) >>> print """This is a very log st ...

  7. [leetcode]124. Binary Tree Maximum Path Sum二叉树最大路径和

    Given a non-empty binary tree, find the maximum path sum. For this problem, a path is defined as any ...

  8. 使用springmvc从页面中获取数据,然后根据获得的参数信息进行修改,如果修改的数据中含有不是基本数据类型的参数。比如传的参数中有Date类型的数据时,需要我们进行参数类型转换。

    1.1 需求 在商品修改页面可以修改商品的生产日期,并且根据业务需求自定义日期格式. 1.2 需求分析 由于日期数据有很多格式,所以springmvc没办法把字符串转换成日期类型.所以需要自定义参数绑 ...

  9. PS想象的力量无限大,设计师的脑洞无限大!

    我(nemanjasekulic)一直对魔法与科幻感兴趣,但是,现实中,它们并不存在.我所做的是尽量体现一切都是可能的,表达一种没有约束的理想概念. 编辑:千锋UI设计

  10. [开源,学习,分享]UWP第三方简书客户端分享

    简介 Windows10正式版发布到现在,我利用零零碎碎的一些时间对UWP进行一些学习,也基于这门技术开发了一个第三方的简书App. 基本界面 优酷视频: http://v.youku.com/v_s ...