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