Day56 Java框架 SSH案例_CRM(四)

联系人管理

一.保存联系人

  1. 修改menu.jsp的链接
  2. 编写Action中的saveUI的方法
  3. 编写Service
  4. 编写DAO
  5. 修改添加页面(改成Struts2的标签)
  6. 编写表单提交的路径
  7. 编写Action的save方法
  8. 编写Service ,加上事务注解
  9. 编写DAO

二.修改联系人

  1. 修改列表页面上的链接
  2. 编写Action的eidtUI方法
  3. 编写Service
  4. 编写DAO
  5. 修改编辑页面提交的路径
  6. 编写Action的update方法
  7. 编写Service
  8. 编写DAO

三.删除联系人

  1. 修改链接地址
  2. 编写Action中的delete方法
  3. 编写Service
  4. 编写DAO

四.条件查询联系人

  1. 修改列表页面
  2. 修改Action中findAll方法

五.解决与客户之间问题

  1. 级联删除的问题
    - 级联删除,在客户删除的时候,先查询再删除
    - 在客户的映射上进行配置  
  2. 修改客户的时候,联系人的客户的信息丢失
    - 因为在修改客户的时候,没有查询联系人的集合,当点击修改,修改客户(修改客户所关联联系人),因为联系人的集合
    是空,所以将外键置为null.

抽取通用的DAO

一.通用的DAO的抽取

  1. 抽取通用的增删改的操作
    1. 定义接口  BaseDao<T>
    2. 定义实现类 BaseDaoImpl<T> extends HibernateDaoSupport implements BaseDao<T>
  2. 抽取一个查询一个记录的方法
    1. 在接口中定义一个查询的方法
    2.  在实现类中实现查询的方法
       
    3. 如果能把具体的类型的Class解决,查询所有,分页查询都可以解决.
  3. 解决方案一: 在实现类的构造方法中传入一个class
    1. 编写实现类
    2. 在父类提供了有参数的构造方法,在子类中继承了父类,提供构造方法,在子类的构造中,调用父类的有参数的构造
      - 在客户的DAO的实现类中
       
      - 在联系人的DAO的实现类中 同上
  4. 进一步优化: 通过泛型的反射抽取通用的DAO
    1. 如果将DAO中的构造方法去掉,将父类的通用的DAO中提供无参数的构造即可,但是需要获得具体类型的Class才行
    2. 泛型 : 通用的类型
      <>                               : 念为 typeof
      List<E>                       : E称为类型参数变量
      ArrayList<Integer>      : Integer称为是实际类型参数
      ArrayList<Integer>      : ArrayList<Integer> 称为参数化类型
    3. 泛型反射的步骤
      - 获得代表子类对象的Class
      - 查看API

                  Type[ ] getGenericInterfaces();   //获得带有泛型的接口
                  Type getGenericSuperclass();    //获得带有泛型的父类
      - 获得带有泛型的父类
      - 将带有泛型的父类的类型转成具体参数化的类型
      - 通过参数化类型的方法获得实际类型参数
    4. 代码实现
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值