[框架] DAO的作用以及和其他层的关联

为什么要有DAO?

① 将从页面接收来的查询条件参数或者从平台获取的参数设置到DAO中,从而DAO的SQL语句中就可以用接收到的参数作为查询数据的where子句条件的参数。

举一个查询列表的实例:
1)首先明确一个事实,为什么在handler页面中可以通过request.getParameter(Xxx);获得表单提交的内容。

在JSP中,我们在表单内填写的内容一旦提交之后,就会被封装到Action的request对象之中。
因此在后台程序,只要方法里传有request参数,就能够通过这种方法获取表单内容。
同样的,也可以通过response将后台程序数据传回表单。不过通常都是用setAttribute()方法。

public void doSearch(HttpServletRequest request,HttpServletResponse response, Connection conn)

2)在handler中

接收到了username的参数[查询条件][这里的username是JSP页面里文本框控件的标识/name]
String username = request.getParameter(username);

然后在handler层先实例化一个DAO
DAO dao = new DAO();

将username设置在DAO中
dao.SetUserName(username);


实例化一个Factory
Factory factory = new Factory();

调用Factory的setDao()方法
factory.setDAO(dao);

调用Factory的find()方法
List list = factory.find(和DAO对应的VO);

返回List
return  list;


3)DAO中

首先在DAO中会用相应字段的定义

private String userName;

然后在handler里设置在dao中的参数username是通过下面这个方法设置进来的

 public void setUserName(String _username/形参) {
  this.userName/本DAO定义 = _username;
 }

在handler里面set的是实参,这个函数里的_username是形参。
那就是,实参传递表单真实的username给形参_username,然后形参接收到表单内容后,设置到本类(dao)定义的变量userName里面。


然后做数据库字段和Java对象字段的映射
protected void setupFields() throws DAOException {
  addField("useName", "USERNAME");
}


最后如果是单表/视图查询,就到此为止,不过在SetipField中要设置主键表的信息
如果是多表查询,就要再重写getSearchSQL()方法 设置查询条件。

  sql.append(" WHERE ISSUBUNIT = '" + Constants.YORN_YES + "' AND JGUUID ='" + jgUuid + "'");
  if (!StringUtility.isNullorBlank(userName)) {
   sql.append("AND PRJNAME LIKE '%" +userName + "%' ");
  }

这里的jgUuid和userName就是实参传到形参,又设置为本DAO变量

当然,在DAO中也将接收到的参数、JavaBean对象定义的变量和数据库的字段三者做了持久化的映射。

 

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

为什么setAttribute后要forward到一个jsp页面

setAttribute是为了将调用handler类返回的数据共享到request属性范围内,也就是页面间相互共享该数据。
在设置了数据共享之后,就跳转到与之共享的这个页面,将后台处理的数据交由这个页面来反馈显示【JSTL+EL】。


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

DAO的find和FindAll方法有什么区别

DAO的setDao方法和SetObjectValue方法有什么区别


找到这个方法所在的类
使用反编译工具将此类的class文件编译为JAVA文件,然后,看代码是怎么定义的即可区分。

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

DAO.calss

公司自己开发的一个数据访问工具类
在com.icss....里

 

 

posted @ 2013-03-20 15:13  Aviva_ye  阅读(724)  评论(0编辑  收藏  举报