传智播客——巴巴运动网环境搭建和DAO抽象实现

从今天开始,我们将进行12天的巴巴运动网学习,再开始正式学习之前,我们先来了解一下巴巴运动网所运用到的技术。首先巴巴运动网采用Spring2.5+JPA+Struts1.3技术进行开发页面采用DIV+CSS的样式设计,使用Velocity生成静态页面,并使用SSI技术进行的包含处理。在缓存方面,巴巴运动网使用的是Oscache技术。巴巴运动网中大量使用了JavaScriptAjax技术。好了,我们开始正式的巴巴运动网学习。

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>就返回BuyerContact类型  

       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的抽象实现类DaoSupportDaoSupport中通过反射技术获得指定类的父类的泛型参数的实际类型。

5.      DaoSupport抽象类中实现分页查询使用拼接Sql语句的形式完成,通过重载方法给满足不同条件的分页查询请求


版权声明:本文为polite88原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。