JAVA常用小功能實現方法整理


一、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;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM