针对在项目中出现的问题,做一些针对性的记录。大部分都是一些小问题,注意一下就差不多了。
Oracle触发器的写法
@H_301_7@create @H_301_7@or @H_301_7@replace @H_301_7@trigger TRIGGER_DELEVERY_PRODUCT @H_301_7@after @H_301_7@insert @H_301_7@on temp_delivery_header @H_301_7@FOR @H_301_7@EACH @H_301_7@ROW @H_301_7@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);
@H_301_7@BEGIN @H_301_7@select deliline.M_PRODUCT,deliline.qty,deliline.WRITE_TIME,sysdate,deliline.color_code,deliline.color_name,deliline.size_code,deliline.size_name @H_301_7@into v_material_code,v_qty,v_create_date,v_update_date,V_COLOR_CODE,v_color_desc,v_size_code,v_size_desc @H_301_7@from temp_delivery_line deliline @H_301_7@where deliline.docno=:NEW.docno;
@H_301_7@INSERT @H_301_7@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 ) @H_301_7@values( sys_guid(),:NEW.DOCNO,:NEW.M_ATTRIBUTE_CODE1,SUBSTR(:NEW.M_ATTRIBUTE_NAME2,0,4),6,1),:NEW.B_FAIR_CODE,v_material_code,:NEW.BILL_TYPE,v_size_desc );
@H_301_7@update da_pro_main damain @H_301_7@set if_tzd = '1' @H_301_7@where damain.color= V_COLOR_CODE @H_301_7@AND damain.materiel_code =v_material_code;
@H_301_7@update da_pro_item daitem @H_301_7@set if_tzd = '1' @H_301_7@where daitem.color_code= V_COLOR_CODE @H_301_7@AND daitem.mat_code =v_material_code;
@H_301_7@end;
java中返回List集合中指定元素的出现次数
ava中的Collections.frequency(Collection Object o):返回指定集合中指定对象出现的次数
import java.util.*;
@H_301_7@public @H_301_7@class ArrayListTest {
@H_301_7@public @H_301_7@static @H_301_7@void main(String[] args) {
ArrayList<Integer> list = @H_301_7@new ArrayList<Integer>();
@H_301_7@int[] array = {1,12,43,13,43};
@H_301_7@for (@H_301_7@int i : array) {
list.add(@H_301_7@new Integer(i));
}
System.@H_301_7@out.println(Collections.frequency(list,@H_301_7@new Integer(1)));
System.@H_301_7@out.println(Collections.frequency(list,@H_301_7@new Integer(12)));
System.@H_301_7@out.println(Collections.frequency(list,@H_301_7@new Integer(43)));
System.@H_301_7@out.println(Collections.frequency(list,@H_301_7@new Integer(13)));
}
}
在java 中不允许两个null去Equals。一般都会将其转化为String
@H_301_7@public @H_301_7@static String convertNull2String(String @H_301_7@str) {
String res = @H_301_7@null;
@H_301_7@if (@H_301_7@str == @H_301_7@null || "null".equals(StringUtils.trim(@H_301_7@str))) {
res = "";
} @H_301_7@else {
res = StringUtils.trim(@H_301_7@str);
}
@H_301_7@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]);
避免使用迭代器
如果代码像这样:
@H_301_7@for (String @H_301_7@value: strings) {
// Do something useful here
}
那么在每次运行这个代码时,都会创建一个新的迭代器实例,而这会消耗大量的内存。
故建议使用下面的代码:
@H_301_7@int @H_301_7@size = strings.@H_301_7@size();
@H_301_7@for (@H_301_7@int i = 0; i < @H_301_7@size; i++) {
String value: strings.get(i);
// Do something useful here
}
如果实际的列表对象不需要真正发生改变,那么还可以在其阵列版本上操作,比如:
@H_301_7@for (String @H_301_7@value: stringArray) {
// Do something useful here
}
编写基于索引的迭代非常有用