类名首字母大写。
更高层的实现应该捕获低层的异常,同时抛出可以按照高层抽象进行解释的异常。这种做法被称为异常转译。
import org.apache.commons.lang.StringUtils;
StringUtils.isNotBlank(query)
import org.apache.commons.collections.CollectionUtils
CollectionUtils.isNotEmpty(domainNameOld)
(String,Boolean,Integer)判断是否相同
private boolean isDifferentValue(Object newObj,Object oldObj){
if(newObj==oldObj){
return false;
}else{
if(newObj!=null){
if(newObj.equals(oldObj)){
return false;
}
return true;
}else{
return true;
}
}
}
DO里面要用大Boolean(Integer等包装类型)因为ibatis里面null有特殊意义。isempty,如果是小boolean,就会去更新字段。
CO里面用小boolean(int等基本类型),因为基本类型性能好。
action层,用于获取展示页面的数据。故事务不要加在这层。加到manage层。
operationDO.setGmtCreate(new Date()); 设置当前时间为gmtCreate。
循环list,在无法保证所有元素绝对不为null,必须判断元素是否为null(建议最好都做下验证,因为很有可能原先得到保证的,后来被某个开发改了实现,导致list中存在null元素)。
写ibatis时,如果条件是动态的时候,千万要注意,当条件为空,会出现什么状况(如查询整张表,甚至会删除更新整张表)。
因为CO/MODULE/EXCEPTION都要走序列化,所以都必须实现serialser接口。
给外部使用的service方法,需要显示throws异常,给自己使用,由于框架会捕获异常,就不强制要求抛异常了。