一、JAVA代碼實現
1.給查詢的list進行分頁:
1 List<ReportQueryEntity> allList = reportQueryService.execute(merno, cname, orgcode); 2 int count = allList.size(); 3 /*對查詢的列表進行分頁:截取每頁的集合列表 */ 4 List<ReportQueryEntity> pageList; 5 //總頁數 6 int indexSum = (int) (count % query.getPagesize() == 0 ? count / query.getPagesize() : count / query.getPagesize() + 1); 7 if(query.getPageindex()!=indexSum-1){ 8 //不是最后一頁(query.getPageindex():從0開始) 9 pageList = allList.subList(query.getPageindex()*query.getPagesize(), (query.getPageindex()+1)*query.getPagesize() ); 10 }else{//最后一頁 11 pageList= allList.subList(query.getPageindex()*query.getPagesize(),count ); 12 } 13 Page<ReportQueryEntity> page = new PageImpl<ReportQueryEntity>(pageList,new PageRequest(query.getPageindex(), query.getPagesize()), count); 14 modelMap.put(PAGE, page);
2.
二、js,jquery實現
1.計算兩個日期之間的相差天數:
1 /** 2 * 根據兩個日期,判斷相差天數 3 * @param sDate1 開始日期 如:20161101 4 * @param sDate2 結束日期 如:20161102 5 * @returns {number} 返回相差天數 6 */ 7 function daysBetween(sDate1,sDate2){ 8 //轉換為12-18-2006格式 9 var startdate=new Date(sDate1.substring(4,6)+"-"+sDate1.substring(6,8)+"-"+sDate1.substring(0,4)); 10 var enddate=new Date(sDate2.substring(4,6)+"-"+sDate2.substring(6,8)+"-"+sDate2.substring(0,4)); 11 var time=enddate-startdate; 12 var days=parseInt(time/(1000 * 60 * 60 * 24)); 13 return days; 14 };
2.select下拉框實現模糊查詢:
(1)使用bootstrap框架進行實現
①首先需要引入的JS和CSS有:
bootstrap.css
bootstrap-select.min.css
jquery-1.11.3.min.js
bootstrap.min.js
bootstrap-select.min.js
備注:
(a)官網: https://developer.snapappointments.com/bootstrap-select/
(b) xx.js 和xx.min.jsI區別(xx.css和xx.min.css區別):
min是將js進行壓縮,去除了注釋和空格;在網絡傳輸中文件小了很多,節省寬帶。
xx.js帶有注釋和空格。所以,應用的時候推薦使用min,學習讀源代碼的時候使用xx.js
②jsp:內容:
<link type="text/css" href="<%=path %>/style/bootstrap/bootstrap-select.min.css<%=version %>" rel="stylesheet">
<link href="="<%=path %>/style/bootstrap/bootstrap.min.css" rel="stylesheet">
<script src="="<%=path %>/script/bootstrap/bootstrap.min.js"></script>
<script type="text/javascript" src="<%=path %>/script/bootstrap/bootstrap-select.min.js<%=version %>"></script>
<script type="text/javascript" src<%=path %>/script/commons/jquery.min.js"></script>
<select name="pk.merchNo" validation="required" class="selectpicker" data-live-search="true" >
<option value="">—— select ——</option>
<c:forEach items="${channelmerchantList }" var="item">
<option value='${item.merchNo }' >${item.merchNo }-${item.cname }</option>
</c:forEach>
</select>
(a) class="selectpicker"
(b) data-live-search="true"時顯示模糊搜索框,不設置或等於false時不顯示。
(c) 設置屬性:multiple 時為多選
備注:若對應的select下拉列表不是一開始就加載進頁面的:而是動態綁定的數據,則在數據動態綁定更新之后,需要 初始化刷新數據 :
$(".selectpicker" ).selectpicker('refresh'); //動態綁定數據一定要加這句話否則沒用
代碼示例:
//聯動:根據受理機構的改變獲取對應的受理商戶列表 function changeBaseOrg(obj){ $("#merchantcodeIn option").remove(); var baseOrg = obj.value; $.ajax({ type : 'POST', async : true, url : '<%=path %>/baseBankPoscontrast/searchBaseMerNoByBaseOrg?baseOrg='+baseOrg, dataType : 'json', success : function(date) { console.log(1); console.log(date); console.log(date[0]); console.log(date.length); $("#merchantcodeIn").append("<option value=''>—— select ——</option>"); for(var i=0;i<date.length;i++){ $("#merchantcodeIn").append("<option value='"+date[i].merchNo+"'>"+date[i].merchNo+"-"+date[i].cname+"</option>"); } $("select").trigger("optionChange", "111"); $(".selectpicker" ).selectpicker('refresh'); //動態綁定數據一定要加這句話否則沒用 }, error : function(data, status, e) { console.log(2); console.log(e); } }); }
三、SQL(Oracle)語句實現:
1.替換某表的某字段所有記錄為不同的數據(存儲過程)
1 create or replace procedure replaceChannelMerPId( 2 po_RETURN out varchar2 3 ) is 4 v_orgcode CHAR(8); 5 v_merch_no CHAR(15); 6 v_bankno VARCHAR2(64); 7 v_bankacctno VARCHAR2(64); 8 v_pid CHAR(4); 9 v_rowcount number(4); 10 v_pidcount number(4); 11 begin 12 v_rowcount :=0; 13 v_pidcount :=0; 14 --首先遍歷需要替換PID的表:base_channel_merchant(根據唯一鍵(t.bankno,t.bankaccno,t.orgcode,t.merch_no)或者主鍵或者rowid遍歷,才能遍歷所有記錄) 15 DECLARE 16 CURSOR cv_new_cursor IS 17 select t.bankno,t.bankaccno,t.orgcode,t.merch_no from base_channel_merchant t 18 where t.bankno is not null and t.bankaccno is not null and t.payinfo_pid is null 19 group by t.bankno,t.bankaccno,t.orgcode,t.merch_no; 20 BEGIN 21 OPEN cv_new_cursor; 22 LOOP 23 FETCH cv_new_cursor 24 INTO v_bankno, 25 v_bankacctno, 26 v_orgcode, 27 v_merch_no ; 28 EXIT WHEN cv_new_cursor%NOTFOUND; 29 --查詢出對應的銀行信息維護表 30 select min(t.p_id) 31 into v_pid 32 from BASE_MERCH_PAYINFO t 33 where t.bank_line=v_bankno and t.account_no=XOR_Encrypt(v_bankacctno,0); 34 update base_channel_merchant t 35 set t.payinfo_pid=v_pid 36 where t.orgcode= v_orgcode and t.merch_no=v_merch_no ; 37 v_rowcount :=v_rowcount+1; 38 --統計更新的PID不為空條數 39 IF v_pid IS NOT NULL THEN 40 v_pidcount :=v_pidcount+1; 41 END IF; 42 END LOOP; 43 CLOSE cv_new_cursor; 44 commit; 45 po_RETURN := '(0000)操作成功,總計更新數據條數:'||v_rowcount||',PID不為空條數:'||v_pidcount; 46 END; 47 EXCEPTION 48 WHEN OTHERS THEN 49 ROLLBACK; 50 end replaceChannelMerPId;
2.oracle系統變量以及常用SQL總結:
(1)user_objects是oracle字典表的試圖,他包含了通過DDL建立的所有對象。表,試圖,索引。。等等。
其中:
USER_TABLES 包含有關所有表的名稱、列數和其他詳細信息的信息
USER_CATALOG 包含表、視圖和同義詞
USER_COL_COMMENTS 包含對列的備注
USER_CONSTRAINTS 包含表的約束定義
USER_INDEXES 包含有關為表 (IND) 創建的索引的所有信息
USER_OBJECTS 包含用戶擁有的所有數據庫對象
USER_TAB_COLUMNS 包含用戶擁有的表的列和視圖
USER_TAB_COMMENTS 包含對表和視圖的備注
USER_TRIGGERS 包含用戶定義的所有觸發器
USER_USERS 存儲有關當前用戶的信息
①查詢sequence是否存在:
1 select COUNT(*) 2 from user_objects 3 where object_name = 'SEQ_DOWNLOAD' 4 and status = 'VALID';
②查詢某表某字段(類型和長度)是否存在:
1 select COUNT(*) from all_tab_cols 2 where owner = 'QUAS' 3 and table_name = 'BASE_CHANNEL_MERCHANT' 4 and column_name = 'PAYINFO_PID' 5 and data_type = 'CHAR' 6 and data_length = 4;
select COUNT(*) from all_tab_cols
where owner = 'QUAS'
and table_name = 'BASE_CHANNEL_TERMNO'
and column_name = 'KEYTYPE'
and nullable = 'Y';
③查詢某表是否存在主鍵
1 select COUNT(*) from user_constraints 2 where table_name = 'BASE_MCC_FEE' 3 and constraint_type ='P';
④查詢某表是否存在唯一鍵
1 select COUNT(*) from user_constraints 2 where table_name = 'BASE_BANK_POSCONTRAST' 3 and constraint_type ='U';
⑤查詢某表是否存在
select COUNT(*) from user_tables where table_name = 'BUSINTYPE_PRODFUNC_RELATION';
⑥查詢某方法是否存在
1 select COUNT(*) from user_objects 2 where object_name = 'RANDOMUUID' 3 and object_type = 'FUNCTION' 4 and status = 'VALID';
⑦查詢表中字段個數
select count(*) from user_tab_columns where table_name=upper('base_merchant'); --or select max(column_id) from user_tab_columns where table_name=upper('base_merchant_check');
(2)時間戳查詢以前的數據並還原
①4個小時以前的數據:
select * from sys_dictionary as of timestamp sysdate-(4/(24)) ;
②查詢幾天前的快照(最多五天前)
select * from BASE_BANK_POSCONTRAST as of timestamp systimestamp -5;
③查詢某日期的數據(只能查詢5天內的快照)
select * from BASE_BANK_POSCONTRAST as of timestamp to_timestamp('20180528', 'yyyymmdd');
④某表還原幾天前的數據
--先將表數據刪除,在將查詢到的數據插入 delete from tb_billservice14;--delete而不是drop。Delete刪除表數據,drop表整個表刪除 commit; insert into tb_billservice14 select * from tb_billservice14 as of timestamp to_timestamp('20151125 09:00:00', 'yyyymmdd HH:mi:ss') ; commit; --DML操作注意要commit。 --如果你還原的時間點離當前時間太久,可能無法還原。
⑤還原指定內容
--如果你誤刪除了部分數據,可指定條件還原。如: insert into tb_policy20151223 select * from tb_policy20151223 as of timestamp to_timestamp('20160112 10:00:00', 'yyyymmdd HH:mi:ss') where (status=5 or status=6) and prod_no='2026'; commit;
(3)查詢oracle數據庫 版本
SELECT * FROM v$version; --or SELECT * FROM product_component_version;
