1.DTO的存在就是为了帮助我们减少客户端请求而降低服务器压力,提升效率。作者还有一个观点大概是指在使用DTO后我们可以灵活定义数据模型,同时将数据模型和逻辑剥离开了。
使用java.bean.PropertyChangeSupport类。 其实就是将你要控制的对象绑定到该工具中。使用匿名内部类来实现监听器,在propertyChange方法中实现你要的处理。该方法会在firePropertyChange触发了事件之后捕获该事件然后执行。
3.字段后面%TYPE 代表的是你之前声明的变量与你指定的表字段类型相同 防止你表改了字段类型 过程报错
* @param list 原List
* @param keyCallback Key回调
* @return .
*/
public static <T extends AbstractSystemModel> Map<Long, List<T>> list2map2(List<T> list,
IList2MapKey<T> keyCallback) {
Map<Long, List<T>> map = new HashMap<Long, List<T>>();
for (T t : list) {
Long key = keyCallback.getKey(t);
List<T> values = map.get(key);
if (null == values) {
values = new ArrayList<T>();
}
values.add(t);
map.put(key, values);
}
return map;
}
* @param list 原List
* @param keyCallback Key回调
* @return .
*/
@SuppressWarnings("unchecked")
public static <T extends AbstractSystemModel> Map<Long, T> list2map(List<T> list,
IList2MapKey keyCallback) {
Map<Long, T> map = new HashMap<Long, T>();
for (T t : list) {
map.put(keyCallback.getKey(t), t);
}
return map;
}
/**
* List2MapKey callback
*
* @author shenhq
* @version 1.0
* @param <T> .
*/
public static interface IList2MapKey<T extends AbstractSystemModel> {
/**
* getKey
*
* @param value .
* @return .
*/
Long getKey(T value);
}
实例: Map<Long, List<PricePlanInstance>> map = ListUtils.list2map2(ppis, new IList2MapKey<PricePlanInstance>() {
public Long getKey(PricePlanInstance value) {
return value.getProductInstance().getId();
}
});
Pattern p = Pattern.compile("\\s|-");
Matcher m = p.matcher(resCode);
resCode = m.replaceAll("");
JdbcTemplate有一个rowMapper方法,映射
映射
由类生成对象 对象.set属性(值) 对象.方法()
反射
由对象得到类,由属性调用对象 Field.set(对象,值)
由方法调用对象 Method.invoke(对象,参数)
获取类的方法
Class c1=类型.class;根据类名获取类
Class c2=对象.getClass();//根据对象获取类
Class c3=Class.forName("包名.类名");
//获取某个属性
Field f=Class.getDeclaredField("名称");//根据名称获取属性
Field[] f=Class.getDeclaredFields();//获取全部属性
field.setAccessable(true);//强制访问
获取方法
Method m=class.getDeclareMethod("名称",参数列表);
Method[] m=class.getDeclareMethods();//得到所有方法
7.回滚规则的概念比较重要:它使我们能够指定什么样的异常(和throwable)将导致自动回滚。
8.回调
- Class A实现接口CallBack callback——背景1
- class A中包含一个class B的引用b ——背景2
- class B有一个参数为callback的方法f(CallBack callback) ——背景3
- A的对象a调用B的方法 f(CallBack callback) ——A类调用B类的某个方法 C
- 然后b就可以在f(CallBack callback)方法中调用A的方法 ——B类调用A类的某个方法D
大家都喜欢用打电话的例子,好吧,为了跟上时代,我也用这个例子好了,我这个例子采用异步加回调
有一天小王遇到一个很难的问题,问题是“1 + 1 = ?”,就打电话问小李,小李一下子也不知道,就跟小王说,等我办完手上的事情,就去想想答案,小王也不会傻傻的拿着电话去等小李的答案吧,于是小王就对小李说,我还要去逛街,你知道了答案就打我电话告诉我,于是挂了电话,自己办自己的事情,过了一个小时,小李打了小王的电话,告诉他答案是2