1 建立界面原型
center.jsp main.jsp left.jsp ….
2 建立相关文件文件
定义包名:com.oa.(model(模型层), dao(数据访问层), service() ,Action …)
确定Model 层的实体类(有共同属性的实体应该继承同一个父类(共同属性放在父类中))
(Company,Department, Position,Person,父类Party)
确定Service接口方法()
确定Dao接口定义方法()
Struts.xml applicationContext-common.xml databaseContext.xml …
建立数据库,(可以根据model的映射文件.hbm.xml)来自动生成数据库
建立测试文件,注意测试文件(建立一个新的source folder下,包名和src下的工程包名相同,这样就可以省去导入相关包)
项目的命名原则(采用驼峰标志)
项目的包名:com.oa.(dao/dao.impl,model,service/service.impl,vo(PageVo页面模型对象),web,web.action)
辅助包名:com.oa.util
实体的类名:(模型model)
父类:Party(id,description,parent,name,children)
子类:Person(job)
Company(tel)
Department()
Position()
建立父类的映射文件:Party.hbm.xml
注意:继承映射(单表映射是最常用的)
Dao层:对实体进行CRUD(添删改查)
命名:接口:实体名+Dao(XXXDao);
方法:动作+对象(saveXXX(Object );delXXX(Object)…);
方法的操作对象应该每一个实体对象,但是为了程序的灵活性,操作对象定义成父类的对象,这样更有利于代码的维护;
接口:PartyDao(saveCompany();delCompany();updateCompany;)
实现接口的类名:PartyDaoLmpl 并且继承父类(包括全部CURD)
类中方法名:实现接口中定义的方法即可;
注意查找方法中:findByLd(int id){}
(根据配置文件中的组件扫描,来确定注解@(“”))
Service层:命名:实体+Service(PartyService)
接口中的方法名:XXXService
实现接口的类名:
Junit:进行简单的测试:(测试要通过Service层进行测试)
注意:测试时,先要拿到工厂
注意:抽象的分页:
web2.0
public PageVo findPaging (String hql,int offset, int pagesize,Object…params);
因为每一次查询的都不一样,hql不确定(Hql不是查询总记录数),参数也不确定,因此定义成动态参数;
因此这个hql语句只能动态生成。(通过拼语句)
拼字符串这个方法,只有自己调用,因此定义成私有的private;
ThreadLocal模式:
为了在分页查询中,简化传参数,应用ThreadLocal模型,就可以解决这个问题,因为在分页的过程中,Service层根本不需要,offset和pagesize这两个参数,只有在Dao层,才会用到这两个参数。因此为了简化,用ThreadLocal封装这两个参数;
SystemContext这个对象可以封装这两个参数;