OA的部门管理和员工管理模块的实现总结

1.部门管理.  
结构上不同.这里使用的是树形结构.一个部门下面有多个部门.部门的下面还有部门.所以,这里用树形结构是最合适的了.能很好的解决这个问题.来实现功 能.
刚一进入页面的时候,默认显示最顶端的部门.这里用父ID为NULL,进行判断.
在DAO中再实现一个方法,来制定父ID的部门列表.这样就实现了,分层次显示部分的功能.
这里用到了递归
我们可以提供一个工具方法.来方便我们的开发使用.
for (Department dept : topLeveDepartments) {  
            System.out.println("|-"+dept.getName());  
            
            for(Department d : dept.getChildren()){  
                System.out.println(" |-"+d.getName());  
            }  
}  

2.添加不同:  
分部门显示,在添加部门的时候,就不和上一个模块的添加一样.这个模块要比上一个模块复杂.
添加分为添加同级部门和添加下级部门.同样,也需要两个方法来实现功能.这个模块的修改和删除和上一个模块是一样的.没有多大的区别.所以,开发多了,就 会有很多相似的地方.为了提高开发的速度,有些地方得学会拷贝,并巧妙的时候IDE工具提供的替换功能.这样会大大提高我们的开发效率.
DepartmentService的编写
岗位管理模块的Service类是通过继承来实现的.不过,我们这个部门模块得需要一个自己的方法.
public List<Department> findTopLevel() {  
        return getSession().createQuery(//  
                "FROM Department d WHERE d.parent IS NULL")//  
                .list();  
员工管理,先不看账号.
开发要一步一步来,不要一下都做.这样,对我们初学者来是不利.员工的开发,开始就不要看账号分配的功能.一个功能一个功能的实现.

3.Long型数组的使用.  
在添加员工信息的时候,我们使用了一个多选框.这里,在后台的Action中,接收数据的时候,我们用使用一个Long型的数组.来处理.

4.BeanUtils.copyProperty() 的使用:  
在Action的类中,我们经常在Actionfrom和对象之间的拷贝.如果对象的属性少,我们可以一个一个的set和get但是,属性多的时候,这个 显然不是很现实.我们这里就用到了,我们前面学习到的一个工具类 BeanUtils.这个工具很使用.我们这里就使用到了BeanUtils.copyProperty()这个方法.但使用,这个方法的时候,要注意. 属性名不同是不能自动进行拷贝的,有特殊的属性时,我们用单独的处理一下.只拷贝同名的属性.

5.项目经验  
1)不返回null,要返回空的集合.
在对集合进行初始化的时候,我们这里就进行了声明HashSet等,就是为了在使用的时候,减少对null的判断.这样使用方便.
2)查询时,in的使用.getSession().createQuery(“”).setParameterList(“”,””).list();
这样的语句在Hibernate对数据库操作的时候,用到的是in,效率高.
3)在进行程序链编程的时候要注意判断空指针.
4)Long 型,不要忘了在数的后面加上L.1L,2L

6.转换器  
在对日前进行处理的时候,我们用到了转换器.
转换器是BeanUtils提供的功能. 在类上我们要实现Converter接口
在使用之前注册就不晚.回显是调用toString方法的.
public Object convert(Class clazz, Object value) {  
        if (value == null) {  
            return null;  
        }  
        if (value instanceof Date) {  
            return value;  
        }  
        if (value instanceof String) {  
            try {  
                String source = (String) value;  
                return sdf.parseObject(source);  
            } catch (ParseException e) {  
                return null;  
            }  
        }  
        throw new IllegalArgumentException("不支持的类型:" + value.getClass());  
    }  

7.在显示日期的格式时候我们要使 用标签处理.这里就遇到了标签嵌套的问题.  
要这样解决:
<fmt:formatDate value="${EmployeeActionForm.employTime }" pattern="yyyy-MM-dd" var="employTime"/>
<html:text property="employTime" value="${employTime}" styleClass="input1 datepicker_input"/>

8.jQuery 的时间插件.  
在数据时间的时候,为了保证输入正确的格式,这里使用jQuery的时间插件.
先引入jQuery库,再引入jQuery插件的库.
通过对Domo例子的分析,我们可以很容易的应用到我们的系统上来.很快就实现功能了.

角色管理,通过前面学习的东西, 我们可以很容易实现这个模块了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值