【CRM(四)】联系人管理

版权声明:本文为博主原创文章,如果喜欢欢迎收藏转载! https://blog.csdn.net/houwanle/article/details/84999383

CRM综合练习_联系人管理

保存联系人

修改menu.jsp的链接

在这里插入图片描述

编写Action中的saveUI的方法

在这里插入图片描述

编写Service

在这里插入图片描述

编写DAO

在这里插入图片描述

修改添加页面(改成struts2的标签)

编写表单提交路径

在这里插入图片描述

编写Action的save方法

在这里插入图片描述

编写Service

在这里插入图片描述

编写DAO

在这里插入图片描述

修改联系人

修改列表页面上链接

在这里插入图片描述

编写Action的edit方法

在这里插入图片描述

编写Service

在这里插入图片描述

扫描二维码关注公众号,回复: 4814610 查看本文章

编写DAO

在这里插入图片描述

修改编辑页面提交的路径

在这里插入图片描述

编写Action的update方法

在这里插入图片描述

编写Service

在这里插入图片描述

编写DAO

在这里插入图片描述

删除联系人

修改链接地址

在这里插入图片描述

编写Action中的delete方法

在这里插入图片描述

编写Service

在这里插入图片描述

编写DAO

在这里插入图片描述

条件查询联系人

修改列表页面

在这里插入图片描述

修改Action中findAll的方法

在这里插入图片描述

解决与客户之间问题

级联删除的问题

  • 级联删除,在客户删除的时候,先查询再删除
  • 在客户的映射删进行配置
    在这里插入图片描述

修改客户的时候,联系人的客户的信息就丢失了

  • 因为在修改客户的时候,没有查询联系人的集合,当点击修改,修改客户(修改客户所关联联系人)因为联系人的集合是空,所以将外键置为null。
    在这里插入图片描述

CRM综合练习_抽取通用的DAO

通用的DAO的抽取

在这里插入图片描述

抽取通用的增删改的操作

  • 定义接口
    在这里插入图片描述
  • 定义实现类
    在这里插入图片描述

抽取一个查询一个的方法

  • 在接口中定义了一个查询的方法
    在这里插入图片描述
  • 在实现类中实现查询的方法
    在这里插入图片描述
    如果能把具体的类型的Class解决,查询所有,分页查询都可以解决!!!

解决方案一:在实现类的构造方法中传入一个Class

  • 编写实现类
    在这里插入图片描述
    在父类中提供了有参数的构造方法,在子类中继承了父类,提供构造方法,在子类的构造中,调用父类的有参数的构造。
  • 在客户的DAO的实现类中
    在这里插入图片描述
  • 在联系人的DAO的实现类中
    在这里插入图片描述
  • 有了以上这些内容,将查询的所有的方法,都抽取
    • 接口
      在这里插入图片描述
    • 实现类
      在这里插入图片描述
      如果这样抽取完成以后,那么在编写DAO的时候如果里面都是一些CRUD的操作,在DAO中只需要提供构造方法即可。
  • 客户的DAO
    在这里插入图片描述
  • 联系人的DAO
    在这里插入图片描述
    如果将通用的DAO编写的更好,连构造方法都不想要了!!!需要怎么做???
  • 泛型反射

解决方案二:通过泛型的反射抽取通用的DAO

  • 如果现在将DAO中的构造方法去掉,将父类的通用的DAO中提供无参数的构造即可,但是需要在无参数的构造中需要获得具体类型的Class才可以-----涉及到泛型的反射了。
  • 回顾一下泛型:
    • 泛型 :通用的类型。
    • <> :念为 typeof
    • List:E称为类型参数变量
    • ArrayList :Integer称为是实际类型参数
    • ArrayList :ArrayList称为参数化类型
  • 需要做的事情在父类的构造方法中获得子类继承父类上的参数化类型中的实际类型参数
  • 泛型反射的步骤:
    • 第一步:获得代表子类对象的Class
    • 第二步:查看API
      在这里插入图片描述
      • Type[] getGenericInterfaces(); :获得带有泛型的接口,可以实现多个接口。
      • Type getGenericSuperclass(); :获得带有泛型的父类,继承一个类。
    • 第三步:获得带有泛型的父类
    • 第四步:将带有泛型的父类的类型转成具体参数化的类型
    • 第五步:通过参数化类型的方法获得实际类型参数
  • 代码实现
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/houwanle/article/details/84999383