第 3 章
完成基础模块的开发
一、通用类抽取
(一)DAO 接口及类通用部分抽取
1.DAO 接口抽取(1)建立 IBaseDao 接口,将 IDepDao(部门列表接口)的内容拷贝到这个接口里,将实体类替换为 T , 批量替换要注意,区分大小写.让 IDepDao 继承自 IBaseDao,删除掉所有的方法
北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090
2.DAO 类抽取
(1)创建 BaseDao 继承自 HibernateDaoSupport 类,将 DepDao 中的方法复制过来。
(2)添加泛型 T
(3)替换类 Dep 为 T ,dep 为 t
(4) 将 getDetachedCriteria 方法改为公有的空方法、 因为此方法里是对查询条件的构建,无法提取到父类,只能有子类去实现。
(5)处理 T.class 问题
T 本身是泛型,是不能.class ,如何处理呢?我们可以先定义一个 entityClass的属性然后,将 T.class 替换为 entityClass
北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090下面就是 entityClass 如何构建了,我们写个构造方法,在方法体中写下列代码 Typ
e type=getClass().getGenericSuperclass();//得到子类的 class 的父一级 Class
ParameterizedType ptype=(ParameterizedType)type;//可以得到泛型类型的 TYPE
Type[] types= ptype.getActualTypeArguments();//得到所有泛型的类型
entityClass =(Class<T>) types[0]; //取第一个泛型的类型
BaseDao 完成了,我们开始修改 DepDao修改继承父类为 BaseDao除 getDetachedCriteria 之外的其它方法全部删除。修改 getDetachedCriteria 方法的访问修饰符为 protected 或 public测试看是否成功吧?抽取之后的 dao 是不是清爽很多呀!接着来!
(二)Biz 接口及类通用部分抽取
1.Biz 接口抽取抽取后,修改 IDepBiz, 删除所有方法,继承自 IBaseBiz
2.Biz 类抽取先替换这部分
北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090替换为下面代码, 改成父接口所有的 depDao 改为 baseDao所有的 Dep 改为 T ,所有的 dep 变量改为 t
BaseBiz 完成后,再修改 DepBiz
北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090
OK 了,测试一下吧。
(三)action 类通用部分抽取修改业务逻辑层接口的声明改成下列代码:把所有的 depBiz 替换为 baseBiz添加泛型
北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090替换所有的 Dep 为 T dep 为 t
get 方法里强转修改 write 的访问修饰符为 public
我们再修改 DepAction 让其继承自 BaseAction ,并泛型实体
测试一下,我们会发现列表 、删除 是可以用的,但是点修改,无法查询出数据是什么原因呢??
北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090通过火狐浏览器 我们看一下 ,返回的 json 变成了 t.name而我们的表单是我们把表单的 name 修改为 t. 形式的试一试?测试 OK 了,我们把查询表单也修改一下
(四)JS 通用部分抽取
1、在 js 文件夹建立 crud.js, 在将 JS 中代码复制到 crud.js 中,将可能变化的部分改为变量,替换 crud.js 中变量部分(1)修改页面,设置变量
北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090(2)修改 crud.js,替换变量替换 URL 为如下形式其它的增删改的 URL 也参考此模式,替换 datagrid 的列定义:
二、代码生成器(扩展)详见文档《代码生成器》
北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090
三、员工管理的完善(重点)
(一)完善列表显示效果
1.去掉密码列如图所示,密码出现在列表中不符合常理,应该去掉密码的显示(1)打开 emp.html 删除下图红线一行。(2)刷新浏览器,看到此列已被删除。
北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090虽然在页面上无法看到密码了, 但是输出 json 的 action 还是可以看到密码数据的这是很不安全的,怎么办呢? 我们可以通过 fastJSON