isNull判斷property欄位是否是null,用isEmpty更方便,包含了null和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. 功能描述
使用者可自行設定部分非重要彈出公告的設定。
2. 功能需求
1) 允許使用者自行屏蔽“返銷公告”,“銀行存款通知”,“線上存款通知”三種類型公告。
2) 可在以上三種公告彈出頁面上使用複選框設定不再通知此類公告。
3. 介面需求
1) 彈出公告頁:
在“返銷公告”( 25 ),“銀行存款通知”( 63 )及“線上存款通知”( 64 )三種類型公告頁面上增加複選框“不再彈出此類公告”。
2) 公告提示設定:
可直接對以上三種公告進行屏蔽設定(開啟 10| 關閉11)。
4. 商務程序
5. 邏輯需求
使用者儲存屏蔽狀態儲存於 t_bussiness_set 中的“返銷公告屏蔽”( sale_back ),“銀行存款通知”( remittance_bank ),“線上存款通知”( remittance_online )欄位。
6. 效能需求
7. 相關模組
8. 資料庫相關表
1) T_bussiness_set 商戶設定表
2) T_notice 公告表
1.sqlMap
<select id="querySingleModelByOut" parameterClass="com.hanpeng.base.phone.model.TBussinessNotice" resultClass="com.hanpeng.base.phone.model.TBussinessNotice">select * from (select row_.*, rownum rownum_ from (SELECTi.NOTICE_NUM as noticeNum ,i.BUSSINESS_ID as bussinessId ,i.STATE as state ,i.READ_DATE as readDate ,n.NOTICE_TITLE as noticeTitle ,n.NOTICE_INFO as noticeInfo ,n.CREATE_DATE as createDate ,n.EMPLOYEE_ID as employeeId ,n.NOTICE_TYPE as noticeType ,n.NOTICE_SHOW_TYPE as noticeShowType ,n.FINISH_DATE as finishDate ,n.PUBLISH_DATE as publishDate FROM T_BUSSINESS_NOTICE i left join T_NOTICE n on n.NOTICE_NUM = i.NOTICE_NUM WHEREn.PUBLISH_DATE <= sysdate AND n.FINISH_DATE >= sysdate<isNotEmpty prepend=" AND " property="bussinessId"> i.BUSSINESS_ID = #bussinessId# </isNotEmpty><isNotEmpty prepend=" AND " property="state"> i.STATE = #state# </isNotEmpty><isNotEmpty prepend=" AND " property="noticeShowType"> n.NOTICE_SHOW_TYPE = #noticeShowType# </isNotEmpty><isEqual property="saleBack" compareValue="10" prepend=" AND ">n.NOTICE_TYPE!='25'</isEqual><isEqual property="remittanceBank" compareValue="10" prepend=" AND ">n.NOTICE_TYPE!='63'</isEqual><isEqual property="remittanceOnline" compareValue="10" prepend=" AND ">n.NOTICE_TYPE!='64'</isEqual> )row_ where rownum <=1 ) where rownum_>=0</select>
2.Action
/** * 查詢公告彈出 * @return * @author wwy * @date 2011-10-13 下午13:35:11 */public void queryByOut(){try {PrintWriter out = this.getResponse().getWriter();if(getUserId() != null){bussinessNotice = noticeService.selectSingleModelByOut("26",getUserId());if(bussinessNotice==null){out.print("");}else{out.print("{\"noticeNum\":\""+bussinessNotice.getNoticeNum()+"\"}");}}else{out.print("");}} catch (Exception e) {log.error("彈出式公告查詢失敗" + e.fillInStackTrace());}}
3.serviceImpl
public TBussinessNotice selectSingleModelByOut(String state,String bussinessId) {TBussinessNotice tbn = new TBussinessNotice();tbn.setBussinessId(bussinessId);tbn.setState("17");tbn.setNoticeShowType(state);TBussinessSet bussinessSet = BussinessSetService.queryById(bussinessId);//設定狀態,sqlMap根據狀態isEqual判斷tbn.setSaleBack(bussinessSet.getSaleBack());tbn.setRemittanceBank(bussinessSet.getRemittanceBank());tbn.setRemittanceOnline(bussinessSet.getRemittanceOnline());return bussinessNoticeDao.selectSingleModelByOut(tbn);}
4.frameTop.jsp
<script type="text/javascript">//彈出公告查詢var autoNotice = setInterval(getNotice,1000*60); function getNotice(){clearInterval(autoNotice);$.ajax({type:'post',url:'Notice_queryByOut',dataType:'json',success:function(data){if(data!=null){$.hpDialog.open('Notice_detailByNotice?initLoadMethod=c&id='+data.noticeNum);}else{autoNotice = setInterval(getNotice,1000*60);} }});}function noticeCallback(){getNotice(); }</script>