本文共 1173 字,大约阅读时间需要 3 分钟。
联系人管理
一.保存联系人
- 修改menu.jsp的链接
- 编写Action中的saveUI的方法
- 编写Service
- 编写DAO
- 修改添加页面(改成Struts2的标签)
- 编写表单提交的路径
- 编写Action的save方法
- 编写Service ,加上事务注解
- 编写DAO
二.修改联系人
- 修改列表页面上的链接
- 编写Action的eidtUI方法
- 编写Service
- 编写DAO
- 修改编辑页面提交的路径
- 编写Action的update方法
- 编写Service
- 编写DAO
三.删除联系人
- 修改链接地址
- 编写Action中的delete方法
- 编写Service
- 编写DAO
四.条件查询联系人
- 修改列表页面
- 修改Action中findAll方法
五.解决与客户之间问题
- 级联删除的问题 - 级联删除,在客户删除的时候,先查询再删除 - 在客户的映射上进行配置
- 修改客户的时候,联系人的客户的信息丢失 - 因为在修改客户的时候,没有查询联系人的集合,当点击修改,修改客户(修改客户所关联联系人),因为联系人的集合 是空,所以将外键置为null.
抽取通用的DAO
一.通用的DAO的抽取
- 抽取通用的增删改的操作
- 定义接口 BaseDao<T>
- 定义实现类 BaseDaoImpl<T> extends HibernateDaoSupport implements BaseDao<T>
- 抽取一个查询一个记录的方法
- 在接口中定义一个查询的方法
- 在实现类中实现查询的方法
- 如果能把具体的类型的Class解决,查询所有,分页查询都可以解决.
- 解决方案一: 在实现类的构造方法中传入一个class
- 编写实现类
- 在父类提供了有参数的构造方法,在子类中继承了父类,提供构造方法,在子类的构造中,调用父类的有参数的构造 - 在客户的DAO的实现类中 - 在联系人的DAO的实现类中 同上
- 进一步优化: 通过泛型的反射抽取通用的DAO
- 如果将DAO中的构造方法去掉,将父类的通用的DAO中提供无参数的构造即可,但是需要获得具体类型的Class才行
- 泛型 : 通用的类型 <> : 念为 typeof List<E> : E称为类型参数变量 ArrayList<Integer> : Integer称为是实际类型参数 ArrayList<Integer> : ArrayList<Integer> 称为参数化类型
- 泛型反射的步骤- 获得代表子类对象的Class - 查看API Type[ ] getGenericInterfaces(); //获得带有泛型的接口 Type getGenericSuperclass(); //获得带有泛型的父类- 获得带有泛型的父类 - 将带有泛型的父类的类型转成具体参数化的类型 - 通过参数化类型的方法获得实际类型参数
- 代码实现
转载地址:http://llawi.baihongyu.com/