工作中小细节总结(二)

21. input 使用disable  Form拿不到值  需改为readonly

22. 逻辑优化
    1. 解析装箱excel时,不要开着数据库连接进行excel解析;
    2. 针对大数据量的excel,不要全部解析完成后才一并导入数据库,需要解析一部分导入一部分;
    优化后的处理逻辑:
    1.
    try{
        打开数据库连接,
        开启数据库事务,
        将两个excel文件名称信息导入bic_cf_file_record中,
        关闭数据库事务;
    }
    catch (Exception e)
    {
        如果插入异常,catch主异常后,判断是主键或索引冲突后,
        重新包装异常:Exception("导入的文件已存在,不容许重复导入");
    }
    finally
    {
         关闭数据库连接
    }


    2. 将装箱excel解析到list中;
    try{
        打开数据库连接;
        将装箱list的批量插入的数据库中;
    }
    finally
    {
        关闭数据库连接
    }


    3. 循环解析装盒excel中的sheet
    for {
    3.1 解析一个sheet;
    3.2 进行数据保存操作
       {
           开启数据库连接;
           保存数据;
       }finlly{
           关闭数据库连接;
       }
    }


    4. 如果在保存数据过程中发生异常,删除之前保存的文件信息,以及数据。

23. 数据库操作尽量放在一起

24. 多个数据时尽量使用批量插入方法

25. jstl标签中EL表达式不能用
    解决办法:<%@taglib prefix="c" uri="http://java.sun.com/jstl/core_rt"%>
    需使用高版本

26. exception 对象仅在错误处理页面中才有效 isErrorPage = true

27. 重定向
    response.sendRedirect("页面");

28. Ctrl + Alt + H 查找调用该方法的地方

29. Ctrl + H 查找

30. Form不需要重新set回去。。。。 待确认



31  Ctrl + F3  列出方法和变量

32  Ctrl + F4  回退方法至调用地方

33  REGEXP_REPLACE(Tt.USAGE_NAME || Tt.SUMMARY || Tt.REMARK ||Tt.TRAN_PS, '\D', '')
    正则表达式              \D 查找非数字字符。
    instr(REGEXP_REPLACE(Tt.USAGE_NAME || Tt.SUMMARY || Tt.REMARK ||
                                    Tt.TRAN_PS,
                                    '\D',
                                    ''),
                     substr(t.jrnlno, 0, LENGTH(T.JRNLNO) - 3)) > 0
字符串连接, 去掉所有非数字的字符,且包含交易流水号去掉后3位

34  DECODE(T.TYPE,1,'转帐',2,'刷卡','9','其他')

35  ORDER BY T.RISK_LEVEL, DECODE(T.AMOUNT_TYPE, 'X', '3', 'C', '1', 'S', '2','F', '4') ;

36
SELECT t.AMOUNT_CODE 编号,
       t.CUS_CODE 公司编号,
       t.CUS_NAME 公司名称,
       t.BLOC_CODE 集团号 ,
       DECODE(T.AMOUNT_TYPE, 'X', '协议额度', 'C', '客户', 'S', '单笔','F', '分额度') "类型",
       DECODE(T.RISK_LEVEL, 'R001', '一般', 'R002', '低', 'R003', '类低') "风险级别",
       SUM(T.AMOUNT_VALUE) "批复额度",
       SUM(T.AMOUNT_ALLOT) "分配额度",
       SUM(T.AMOUNT_OCCUPY) "占用额度",
       SUM(t.AMOUNT_CURR) 币别,
       SUM(T.AMOUNT_UNOCCUPY) "可用/剩余",
       SUM(T.AMOUNT_USED) "业务余额",
       SUM(T.AMOUNT_FREEZE) "冻结金额"
  FROM AMOUNT_DETAIL T
 WHERE T.CUS_CODE = '247129714'
  AND T.AMOUNT_TYPE IN ('X', 'C', 'S','F')
AND t.RISK_LEVEL = 'R001'
GROUP BY ROLLUP((t.AMOUNT_CODE, t.CUS_CODE, t.CUS_NAME,t.BLOC_CODE,DECODE(T.AMOUNT_TYPE, 'X', '协议额度', 'C', '客户', 'S', '单笔','F', '分额度')
                 ,DECODE(T.RISK_LEVEL, 'R001', '一般', 'R002', '低', 'R003', '类低')))

37. 编码
java.net.URLEncoder.encode(string, encodeScheme);

38.  防止乱码
response.addHeader("Content-Disposition", "attachment;filename=" + new String((reportNm + ".xls").getBytes(), "iso-8859-1"));

39 超链接到明细页面
  <td class="whiteBG" align="center" height="25">

  <a href="#" class="underline" style="color: red;"
onclick="detail('<c:out value="${bean.tran_flow_no}"/>', '<c:out value="${bean.tran_date}"/>');">             <c:out value="${bean.tran_flow_no}" />

        </a>
  </td>


40 设置返回链接
ActionHelp.setCurrentLink(request, "bookListRestitutes");

猜你喜欢

转载自blog.csdn.net/qq_35079856/article/details/77131516