您的位置:首页 > 其它

我的大学十年——林锐(转)(下)

2008-11-30 13:32 162 查看
以后做工程时:

一个操作对应一个Servlet

一个BEAN对应一张表

一张表只能由一个DAO操作

所以一个DAO中必须导入该DAO对应的BEAN

DAO类名规则:表名DAO

BEAN类名规则:表名BEAN

所以一个DAO中有多个方法 [单个信息四种操作+一个信息BEAN四种操作]

DAO中方法前缀:get - del - upd - add

public TheBean getOneBeanByID(String id){方法体}

public boolean delOneBeanByID(String id){方法体}

public boolean updOneBeanByBean(TheBean bean){方法体}

public boolean addOneBeanByBean(TheBean bean){方法体}

public List getAllBean(){}

其它的方法 - 比如只需要修改用户表中某一条的用户年龄 - 可以不必使用NEAN - 而定义成:

updOneBeanByAge

总结方法名称定义规则:

public boolean-状态/String-消息 addOneXxxBean (参数:Bean实例) {方法体}

查询时涉及一条记录:

public XxxBean getOne{Bean|字段}By{表中字段} + {方法体}

查询时涉及多条记录:

public XxxBean/List get{One|Some|All}{Bean|字段} + {By} + {表中字段|Bean} + {方法体}

public {Bean|List|boolean} {add|get|upd|del} + {One|Some|All} + {Bean|字段} + {By} + {表中字段|Bean} + {方法体}

public boolean-状态/String-消息 del{One|Some|All}BeanBy{表中字段} (参数:Bean实例) {方法体}

一般情况下By什么就传什么参数

--关于One|Some|All的意义:

One:说明方法只操作一条记录

Some:说明方法会操作多条记录

All:说明方法操作全部记录

考虑DAO中改出现哪些方法公式:

从用户操作出发,判断用户都需要哪些操作

1.具体一个操作是属于[增、查、改、删]哪一种 - 得到方法名前缀

2.该操作可能涉及到对应表的多少条记录 - 得到方法中缀 {One|Some|All}

3.该操作可能涉及到一条记录的一个字段呢,还是多个字段? - 一个字段则此处为该字段名,多个或者全部字段则此处为BEAN类名

4.该操作是通过哪些参数来完成的,实际中只可能是该表的字段名 [通过表的字段名来操作表]

参数可能是一个字段呢,还是多个字段? - 一个字段则此处取该字段名,多个或者全部字段则此处取BEAN类名

情况:如果参数是一个字段不够,但是别的参数又不属于表的字段,那么此处仍取该字段名[提示:方法会重载]

By+所需参数名 []

5.改操作之后会返回什么内容呢?

一条记录?多条记录?一条记录中的一些字段值?

思考实例1:

注册用户 = [增add]+[一条记录=One]+[可能涉及该记录的多个字段=UserBean]+[By所以需要多个字段信息为参数=UserBean] (UserBean ub)

= addOneUserBeanByUserBean(UserBean ub)

实际中增加一条记录的时候必会涉及多个字段,所以没必要写后面的By...只写成:addOneXxxBean(XxxBean xb)

必须严格按照 增 查 改 删 的顺序定义方法 - 原因:数据操作顺序

1.修改和删除的时候可能先去查询,但是前提是必须有数据 - 所以先有数据才能查询 - 所以增 > 查

2.改了之后还能删,但是删了之后就什么都不能做了,所以 - 改 > 删

3.所以 - 增 > 查 > 改 > 删

必须严格按照 先单个后一条的顺序定义方法 - 没有原因

最终方法顺序:

addOneByID > addOneByElse > addAll > updOne > updAll > delOne > delAll > getOne > getAll

一个DAO中必须出现的方法:如上

结论:表中的一条记录当做一个BEAN对象 [Hibernate就是这么来的]

DAO操作数据时不只操作增 查 改 删,或许还有数据检查方法。例如:非空性+重复数据等

如果一个DAO中的方法需要一些非操作数据的方法时,则该方法出现在util包下的类中。

至于方法体如何书写 - 参照另一个文件 - 妙计锦囊:如何写方法

所以DAO中方法的名称应该和Servlet类名一致

最终包名顺序: com.xxx.bean --

com.xxx.model

com.xxx.dao ↑

com.xxx.servlet ↑

com.xxx.util

请求 ↑

三层的关系是不是很清楚呢 ?

一个Servlet只针对一个请求

要求:

一个Servlet只能有一个DAO实例

一个DAO类只能使用一个BEAN实例

一个请求[请求参数][V-视图]

->>

一个Servlet[整合参数][C-控制][DAO实例-调用具体方法]

->>

一个DAO

---------------------------局限性

Servlet依赖于DAO - DAO依赖于BEAN [尽管是单向依赖]

但是:一旦工程变动 - 则Servlet可能需要重新获取新的DAO实例,DAO所依赖的BEAN也可能修改

由此可见Spring的好处:

依赖注入 - 只须配置文件给出Servlet中的DAO引用即可。后期只需要修改配置文件即可,无须打开Servlet

====================

web.xml文件中<servlet-mapping>的<url-pattern>必须是根目录 - 即:/XxxxServlet

=================

Servlet类取名规则:NEAN类名+动作+Servlet

可能的动作包括:Add - Del - Upd - Get - Load

如果动作时Load:则Load和NEAN类名之间还应出现{One|All|Some}
本文出自 “OtxAcme” 博客,转载请与作者联系!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: