SSH企业案例_CRM客户管理系统(四):联系人管理&抽取通用Dao

1、CRM综合练习_联系人管理

保存联系人

修改menu.jsp的链接
新增联系人
编写Action中的saveUI的方法
saveUI
编写Service
customer_findall
编写DAO
customer_findall
修改添加页面(改成struts2的标签,与客户查询一样)
编写表单提交路径
提交链接
编写Action的save方法
save
编写Service
service1
编写DAO
dao1

修改联系人

修改列表页面上链接
xiugai
编写Action的edit方法
edit1
编写Service
getby
编写DAO
getby1
修改编辑页面提交的路径
edit
编写Action的update方法
update
编写Service
update1
编写DAO
update2
注意:在edit页面要加的隐藏标签<s:hidden name="lkm_id"/>

删除联系人

修改链接地址
删除
编写Action中的delete方法
delete
编写Service
delete1
编写DAO
delete2

条件查询联系人

修改列表页面
修改页面
修改Action中findAll的方法
findALl

解决与客户之间问题

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

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

通用的DAO的抽取

抽取通用的增删改的操作
 定义接口
baseDao
 定义实现类
basedaoImpl
抽取查询一个的方法
 在接口中定义了一个查询的方法
dao1
 在实现类中实现查询的方法
抽取1
如果能把具体的类型的Class解决,查询所有,分页查询都可以解决!!!
解决方案一:在实现类的构造方法中传入一个Class
 编写实现类
clazz
在父类中提供了有参数的构造方法,在子类中继承了父类,提供构造方法,在子类的构造中,调用父类的有参数的构造。
 在联系人的DAO的实现类中(与下一样)
 在客户的DAO的实现类中
customer
 有了以上这些内容,将查询的所有的方法,都抽取
 接口
dao2
 实现类
dao3
如果这样抽取完成以后,那么在编写DAO的时候如果里面都是一些CRUD的操作,在DAO中只需要提供构造方法即可。
 客户的DAO
 联系人的DAO
linkman
如果将通用的DAO编写的更好,连构造方法都不想要了!!!需要怎么做???
泛型反射
解决方案二:通过泛型的反射抽取通用的DAO
 如果现在将DAO中的构造方法去掉,将父类的通用的DAO中提供无参数的构造即可,但是需要在无参数的构造中需要获得具体类型的Class才可以-----涉及到泛型的反射了。
 回顾一下泛型:
 泛型 :通用的类型。
 <> :念为 typeof
 List< E > :E称为类型参数变量
 ArrayList< Integer > :Integer称为是实际类型参数
 ArrayList< Integer > :ArrayList<Integer>称为参数化类型
需要做的时候在父类的构造方法中获得子类继承父类上的参数化类型中的实际类型参数
 泛型反射的步骤:
 第一步:获得代表子类对象的Class
 第二步:查看API
api
 Type[] getGenericInterfaces(); :获得带有泛型的接口,返回值是type[]是因为可以实现多个接口。
 Type getGenericSuperclass(); :获得带有泛型的父类,返回值是type,继承一个类。
 第三步:在baseDao中获得子类实现的带有泛型的父类
 第四步:将带有泛型的父类的类型转成具体参数化的类型
 第五步:通过参数化类型的方法获得实际类型参数
 代码实现
dao4

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hillain

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值