从今天开始,我们将进行12天的巴巴运动网学习,再开始正式学习之前,我们先来了解一下巴巴运动网所运用到的技术。首先巴巴运动网采用Spring2.5+JPA+Struts1.3技术进行开发页面采用DIV+CSS的样式设计,使用Velocity生成静态页面,并使用SSI技术进行的包含处理。在缓存方面,巴巴运动网使用的是Oscache技术。巴巴运动网中大量使用了JavaScript和Ajax技术。好了,我们开始正式的巴巴运动网学习。
1. JPA规范规定实体的标示属性要实现可序列化接口
2. 通过反射技术获得指定类的父类的泛型参数的实际类型:
public static Class getSuperClassGenricType(Class clazz, int index) {
Type genType = clazz.getGenericSuperclass();//得到泛型父类
//如果没有实现ParameterizedType接口,即不支持泛型,直接返回Object.class
if (!(genType instanceof ParameterizedType)) {
return Object.class;
}
//返回表示此类型实际类型参数的Type对象的数组,数组里放的都是对应类型的Class, 如BuyerServiceBean extends DaoSupport<Buyer,Contact>就返回Buyer和Contact类型
Type[] params = ((ParameterizedType) genType).getActualTypeArguments();
if (index >= params.length || index < 0) {
throw new RuntimeException("你输入的索引"+ (index<0 ? "不能小于0" : "超出了参数的总数"));
}
if (!(params[index] instanceof Class)) {
return Object.class;
}
return (Class) params[index];
}
3. 获得实体类的实体名称
protected <E> String getEntityName(Class<E> entityClass){
String name = entityClass.getSimpleName();
Entity entity = entityClass.getAnnotation(Entity.class);
if(entity.name()!= null && !"".equals(entity.name())) name = entity.name();
return name;
}
4. 在巴巴运动网的架构中,很多实体都需要操作增删改查方法,所以定义了一个DAO接口用于定义增删改查方法,并且定义了DAO的抽象实现类DaoSupport。DaoSupport中通过反射技术获得指定类的父类的泛型参数的实际类型。
5. DaoSupport抽象类中实现分页查询使用拼接Sql语句的形式完成,通过重载方法给满足不同条件的分页查询请求