• 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;
  • 相关阅读:
    hadoop2.2编程:MRUnit测试
    TestLinkConverter编程纪要
    Redisson的分布式锁的简单实现
    Jmeter工具使用
    JVM的学习(三)
    Mybatis需要注意的地方及知识点
    JVM学习二(JAVA的四种引用)
    mysql的引擎
    JVM学习一(JVM的内存结构和垃圾回收)
    JDk1.8HashMap的源码分析
  • 原文地址:https://www.cnblogs.com/whhjava/p/9112246.html
Copyright © 2020-2023  润新知