(这里是文字版教程,图文版请进入http://download.csdn.net/detail/home_dear/4029277直接下载)
刚才我们通过手动的方式完成了一个HelloWorld的程序、又通过自动的方式完成了一个数据库操作的功能。现在我们以手动的方式建立一个数据库的保存功能。用来了解整个原理。
CREATE TABLE `tb_author` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`username` varchar(50) DEFAULT NULL,
`truename` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312
需要注意的是家德瑞的表名字很有讲究,以“tb_”开头,后面与jara的对应Bean的类名一致。具体规则在本教程的结尾有专门说明
新建一个与tb_author相对应的bean.bean的内容如下:
package booksbean.test;
/**
* 中文名:作者。说明:保存作者信息;
* @author HomeDear
*/
public class Author {
/** 中文名:主键ID。说明:主键ID */
private Integer id;
/** 中文名:用户名。说明: */
private String username;
/** 中文名:作者姓名。说明: */
private String truename;
/**
* 取得中文名:主键ID。说明:主键ID(id)的值
* @return 中文名:主键ID。说明:主键ID
*/
public Integer getId() {
return id;
}
/**
* 给中文名:主键ID。说明:主键ID(id)赋值
* @param id 中文名:主键ID。说明:主键ID
*/
public void setId(Integer id) {
this.id = id;
}
/**
* 取得中文名:用户名。说明:(username)的值
* @return 中文名:用户名。说明:
*/
public String getUsername() {
return username;
}
/**
* 给中文名:用户名。说明:(username)赋值
* @param username 中文名:用户名。说明:
*/
public void setUsername(String username) {
this.username = username;
}
/**
* 取得中文名:作者姓名。说明:(truename)的值
* @return 中文名:作者姓名。说明:
*/
public String getTruename() {
return truename;
}
/**
* 给中文名:作者姓名。说明:(truename)赋值
* @param truename 中文名:作者姓名。说明:
*/
public void setTruename(String truename) {
this.truename = truename;
}
}
Bean没有什么特别之处。只是属性和与之对应的get、set方法。需要注意的是命名规则。因为hibernate是通过配置文件把表与bean相关联起来的,但家德瑞是通过名字来关联起来的。
这个Bean建完后的情况如下:
文件内容如下:
/**
* Author操作dao
*/
package test.logic.dao;
import java.util.ArrayList;
import com.homedear.db.HdrDao;
import com.homedear.db.InputBean;
import com.homedear.db.OutputBean;
import com.homedear.db.PageList;
import booksbean.test.Author;
public class AuthorDao extends HdrDao {
/**
* Author对象(中文名:作者。说明:保存作者信息)保存
* @param inputBean
* @return
* @throws Exception
*/
private int saveAuthor(InputBean inputBean) throws Exception{
//声明Author对象(中文名:作者。说明:保存作者信息)
Author author = new Author();
//得到页面参数,并将页面参数赋值给Author对象(中文名:作者。说明:保存作者信息)
inputBean.initBeanSingle(author);
return this.save(author);
}
public OutputBean exec(InputBean inputBean) throws Exception {
//声明输出类
OutputBean out = new OutputBean();
if(inputBean.isActionType("authorNewOk")){
int saveRes=saveAuthor(inputBean);
out.put("saveRes",saveRes);
}
return out;
}
}
这个dao完成了数据保存的工作。建立完dao文件后的工程目录结构如下:
文件内容如下:
/**
* 关于Author的业务逻辑类
*/
package test.logic;
import test.logic.dao.AuthorDao;
import com.homedear.db.InputBean;
import com.homedear.db.OutputBean;
import com.homedear.dis.BaseLogicImpl;
public class AuthorLogic extends BaseLogicImpl {
/**
* 与数据库相关的方法,此方法非必须
*/
public OutputBean myDao(InputBean inputBean)throws Exception{
AuthorDao dao = new AuthorDao();
//一个业务逻辑类只能操作一个数据库,如果要操作多个数据库可以在action中调用多个数据库
//dao.setAlias(1);
OutputBean out = dao.main(inputBean);
return out;
}
/**
* 除数据库相关的方法以外的其它方法,为入口方法
*/
public OutputBean main(InputBean inputBean) throws Exception {
//声明输出类
OutputBean out = new OutputBean();
//执行数据库操作
out = myDao(inputBean);
//执行数据库以外的其它操作
//...
//返回输出bean
return out;
}
}
Logic文件完成对dao的调用以及如果存在其它业务时,对其它业务的调用。
Logic文件建立完成后的目录结构如下:
Action文件的内容如下:
package test;
import com.homedear.db.InputBean;
import com.homedear.db.OutputBean;
import com.homedear.dis.BaseLogic;
import com.homedear.dis.BaseServlet;
import java.util.ArrayList;
import com.homedear.tag.tools.PageInfo;
/**
* action控制类
* @author HomeDear
*
*/
public class AuthorAction extends BaseServlet {
public OutputBean execute(InputBean inputBean) throws Exception {
BaseLogic authorLogic = InstanceLogic("test.logic.AuthorLogic");
OutputBean out = authorLogic.execLogic(inputBean);
//设置显示页面
if(inputBean.isActionType("authorNewOk")){
out.setViewNameIsSuccess();
}
return out;
}
}
Action完成后台与前台的数据交换与页面跳转等工作。建立完成后的目录结构如下:
用于手工录入要入库的数据信息,Jsp页面的名字:authorNew.jsp。内容如下:
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%@ include file="/util/taglib-import.jspf" %>
<html:html>
<ul>新建Author(中文名:作者。说明:保存作者信息)</ul>
<html:form name="form1"action="test.AuthorAction" hdrCheck="return checkForm('form1')">
<html:hidden name="actionType" value="authorNewOk"/>
<table class="tableCss">
<tr>
<td class="tdCss">用户名:</td>
<td class="tdCss"><html:text name="Author_username" hdrCheck="!*用户名"/></td>
</tr>
<tr>
<td class="tdCss">作者姓名:</td>
<td class="tdCss"><html:text name="Author_truename" hdrCheck="!*作者姓名"/></td>
</tr>
</table>
<table class="tableCss">
<tr>
<td colspan="2" class="tdCss"><div align="center"><html:submitButton value="新建"/></div></td>
</tr>
</table>
</html:form>
</html:html>
部署(略)。别忘了从启一下tomcat。
在浏览器中录入以下地址:
http://localhost/HelloWorld/action/test.AuthorAction?actionType=authorNew
以下是截图
本教程的所有的源码与本教程一同发行。请进入http://download.csdn.net/detail/home_dear/4029277直接下载