美文网首页Java学习笔记
项目问题以及解决方案记录

项目问题以及解决方案记录

作者: 赵镇 | 来源:发表于2017-07-11 22:45 被阅读6次

    针对在项目中出现的问题,做一些针对性的记录。大部分都是一些小问题,注意一下就差不多了。

    Oracle触发器的写法

    create or replace trigger TRIGGER_DELEVERY_PRODUCT after insert on temp_delivery_header
           FOR EACH ROW
    DECLARE
           v_material_code VARCHAR2(30);
           v_qty VARCHAR2(32);
           v_create_date date;
           v_update_date date;
           V_COLOR_CODE VARCHAR2(30);
           v_color_desc VARCHAR2(32);
           v_size_code  VARCHAR2(10);
           v_size_desc   VARCHAR2(32);
           BEGIN
             select deliline.M_PRODUCT,deliline.qty, deliline.WRITE_TIME,sysdate,
             deliline.color_code,deliline.color_name,deliline.size_code,deliline.size_name into v_material_code,v_qty,v_create_date,v_update_date,V_COLOR_CODE,v_color_desc,v_size_code,v_size_desc
             from temp_delivery_line deliline  where  deliline.docno=:NEW.docno;
    
             INSERT INTO PVC_DELIVERY_PRODUCT
             (
              pk_id ,
              commissioning_number ,
              brand,
              years,
              season ,
              order_meeting,
              material_code,
              amount ,
              create_date,
              update_date,
              tcd_type,
              color_code,
              color_desc,
              size_code ,
              size_desc
               )
            values(
               sys_guid(),
               :NEW.DOCNO,
               :NEW.M_ATTRIBUTE_CODE1,
               SUBSTR(:NEW.M_ATTRIBUTE_NAME2,0,4),
               SUBSTR(:NEW.M_ATTRIBUTE_NAME2,6,1),
               :NEW.B_FAIR_CODE,
               v_material_code,
               v_qty,
               v_create_date,
               v_update_date,
               :NEW.BILL_TYPE,
               V_COLOR_CODE,
               v_color_desc,
               v_size_code,
               v_size_desc
            );
            update da_pro_main damain set if_tzd = '1' where damain.color= V_COLOR_CODE AND damain.materiel_code =v_material_code;
            update da_pro_item daitem set if_tzd = '1' where daitem.color_code= V_COLOR_CODE AND daitem.mat_code =v_material_code;
    end;
    

    java中返回List集合中指定元素的出现次数

    ava中的Collections.frequency(Collection Object o):返回指定集合中指定对象出现的次数
    
    import java.util.*;
    public class ArrayListTest {
    public static void main(String[] args) {
    ArrayList<Integer> list = new ArrayList<Integer>();
    int[] array = {1, 12, 43, 12, 13, 12, 43};
    for (int i : array) {
    list.add(new Integer(i));
    }
    System.out.println(Collections.frequency(list, new Integer(1)));
    System.out.println(Collections.frequency(list, new Integer(12)));
    System.out.println(Collections.frequency(list, new Integer(43)));
    System.out.println(Collections.frequency(list, new Integer(13)));
    }
    }
    

    在java 中不允许两个null去Equals。一般都会将其转化为String

        public static String convertNull2String(String str) {
            String res = null;
            if (str == null || "null".equals(StringUtils.trim(str))) {
                res = "";
            } else {
                res = StringUtils.trim(str);
            }
            return res;
        }
    

    关联查询比子查询效率更高

    在执行sql语句的过程中,子查询会比关联查询的效率低。所以在能用关联查询的时候就不要使用子查询。
    经过个人实践,证明子查询效率特别低,而一般的子查询都可以由关连查询来实现相同的功能,关联查询的效率要提高很多,所以建议在数据查询时避免使用子查询(尤其是在记录很多时),而最好用关联查询来实现。

    快速补全代码

    本身是这样的 example.createCriteria();
    然后快速变Criteria criteria=example.createCriteria();
    ctrl+2右下角弹出提示,直接按L就可以了。。。。

    使用StringBuilder代替“+”操作符

    对于字符串的操作,其中如果用到了“+”操作符,那么应该改用StringBuilder代替。比如上面的代码。
    这样使得字符串值修改更容易,而且不会对垃圾收集器GC造成额外的压力。

    StringBuilder x = new StringBuilder("a");
    x.append(args.length);
    x.append("b");
    if (args.length == 1);
    x.append(args[0]);
    

    避免使用迭代器

    如果代码像这样:

    for (String value: strings) {
     // Do something useful here
    }
    

    那么在每次运行这个代码时,都会创建一个新的迭代器实例,而这会消耗大量的内存。
    故建议使用下面的代码:

    int size = strings.size();
    for (int i = 0; i < size; i++) {
     String value: strings.get(i);
     // Do something useful here
    }
    

    如果实际的列表对象不需要真正发生改变,那么还可以在其阵列版本上操作,比如:

    for (String value: stringArray) {
     // Do something useful here
    }
    

    编写基于索引的迭代非常有用

    相关文章

      网友评论

        本文标题:项目问题以及解决方案记录

        本文链接:https://www.haomeiwen.com/subject/bikvhxtx.html