首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

一个和模式稍有关系的有关问题

2012-02-06 
求教:一个和模式稍有关系的问题我在最基础的登录系统时,遇到一个问题我想实现数据库中的所有表公用一套增、

求教:一个和模式稍有关系的问题
我在最基础的登录系统时,遇到一个问题
我想实现数据库中的所有表公用一套增、删、改、查方法
假设有两个Bean类——arraylist,
        public   class   BeanA                             public   class   BeanB
        {                                                               {
              get、set方法                                           get、set方法
        }                                                               }
有一个Servlet类ServletC,
      piblic   class   ServletC
      {
            doPost()
            {
                  DBOper   oper=new   DBOper();
                  BeanA     a=new   BeanA();
                  oper.SelectCommon(arraylist,a);
            }
      }
有一个类中实现公用的增、删、改、查方法。——DBOper.java
        public   class   DBOper
        {
              public   ArrayList   SelectCommon(ArrayList   arraylist,Object   obj)
              {
                    /*arraylist使用来构造通用SQL语句的,obj用来接收arraylist对象
                        因为不知道传的是哪一个Bean的对象,所以只能用Object类型,
                        使用构造好的SQL语句可以得到ResultSet,   但显然obj调不出Get、
                        Set方法怎么让obj转到调用这个函数时传的对象(在本例中就是将obj
                        还原成BeanA的对象a)
                        我曾这样试过:
                        String   ClassName=obj.getClass().getName();
                        //这句可以将a的类取出来
                        System.out.println(ClassName);//显示:包名.BeanA
                        obj=Class.forName(ClassName).newInstance();
                        不行,newInstance的返回值也是Object,
                        请问各位高手怎么解决这个问题*/
              }
        }

[解决办法]
不会有通用的

因为表结构是不统一的
------解决方案--------------------


用泛型嘛:
public interface GenericDao <T, PK extends Serializable> {

/**
* 保存一个对象到数据库
* @param newInstance 需要保存的对象
* @return
*/
PK create(T newInstance);

/**
* 从数据库读取一个对象
* @param id 主键
* @return
*/
T read(PK id);

/**
* 更新一个对象
* @param transientObject 被更新的对象
*/
void update(T transientObject);

/**
* 删除一个对象
* @param transientObject 被删除的对象
*/
void delete(T transientObject);
}

热点排行