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;

 

posted @ 2018-05-30 17:38  青山不改,绿水长流  阅读(1720)  评论(0编辑  收藏  举报