`
jiqimiao
  • 浏览: 63311 次
  • 性别: Icon_minigender_1
  • 来自: 常州
社区版块
存档分类
最新评论

struts+spring+hibernate的web应用 Dao层代码编写

 
阅读更多

前一篇文章 (struts+spring+hibernateweb应用<> 架构搭建) 让我们打好了架子,接下来就来编写代码了。在编码之前,我们需要先自行了解 strust,spring,hibernate 基础知识,后面的文章将不会过多的介绍这些框架的基础知识。整个项目由 Dao,Services,Web 三层组成, Dao 层主要通过 hibernate 来操作数据库, Service 层主要体现了业务,事务的处理, Web 层由 struts 来控制。整个项目的控制交由 spring 管理。

现在的这个小项目除了完成基本的添删改查,还有一个简单的分页功能。这个分页功能不仅前台分页,而且在后台数据库也进行了分页处理。

现在就来编写 Dao 层的代码。

首先写好 pojo 的代码:

com.game.products.model 中新建 products.hbm.xml 类,代码如下:

<? xmlversion="1.0"encoding="GB2312" ?>
<! DOCTYPEhibernate-mappingPUBLIC"-//Hibernate/HibernateMappingDTD3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
>

< hibernate-mapping >
< class name ="com.game.products.model.Products" table ="products" >
< id name ="gameId" type ="string" >
< column name ="game_id" length ="5" />
< generator class ="assigned" />
</ id >
< property name ="gameNameCn" type ="string" >
< column name ="game_name_cn" length ="100" />
</ property >
< property name ="gameNameEn" type ="string" >
< column name ="game_name_en" length ="100" />
</ property >
< property name ="gameCapacity" type ="string" >
< column name ="game_capacity" length ="4" />
</ property >
< property name ="gameVersion" type ="string" >
< column name ="game_version" length ="4" />
</ property >
< property name ="gameMedia" type ="string" >
< column name ="game_media" length ="4" />
</ property >
< property name ="gameCopyright" type ="string" >
< column name ="game_copyright" length ="4" />
</ property >
< property name ="gamePrice" type ="string" >
< column name ="game_price" length ="4" />
</ property >
< property name ="gameContent" type ="string" >
< column name ="game_content" length ="100" />
</ property >
</ class >
</ hibernate-mapping >


注意这里的 ID 不是数据库自动生成的,而是根据需要由程序生成,一般项目中的主键 ID 都是采取这种方式。

然后在这个包中再新建 Products 类,代码如下:

package com.game.products.model;

public class Products {
// Fields
private StringgameId; // 编号
private StringgameNameCn; // 中文名称
private StringgameNameEn; // 英文名称
private StringgameCapacity; // 碟数
private StringgameVersion; // 版本
private StringgameMedia; // 介质
private StringgameCopyright; // 版权
private StringgamePrice; // 价格
private StringgameContent; // 攻略

// Constructors
public Products() {}

// Propertyaccessors
public StringgetGameCapacity() {
return gameCapacity;
}


public void setGameCapacity(StringgameCapacity) {
this .gameCapacity = gameCapacity;
}


public StringgetGameId() {
return gameId;
}


public void setGameId(StringgameId) {
this .gameId = gameId;
}


public StringgetGameNameCn() {
return gameNameCn;
}


public void setGameNameCn(StringgameNameCn) {
this .gameNameCn = gameNameCn;
}


public StringgetGameNameEn() {
return gameNameEn;
}


public void setGameNameEn(StringgameNameEn) {
this .gameNameEn = gameNameEn;
}


public StringgetGameVersion() {
return gameVersion;
}


public void setGameVersion(StringgameVersion) {
this .gameVersion = gameVersion;
}


public StringgetGameMedia() {
return gameMedia;
}


public void setGameMedia(StringgameMedia) {
this .gameMedia = gameMedia;
}


public StringgetGameCopyright() {
return gameCopyright;
}


public void setGameCopyright(StringgameCopyright) {
this .gameCopyright = gameCopyright;
}


public StringgetGameContent() {
return gameContent;
}


public void setGameContent(StringgameContent) {
this .gameContent = gameContent;
}


public StringgetGamePrice() {
return gamePrice;
}


public void setGamePrice(StringgamePrice) {
this .gamePrice = gamePrice;
}


}


需要注意的是,我这里都是采用了 string 类型,因为在项目中传递数据,用 string 类型最为方便,同时也便于代码的编写。只是在前台需要编写验证代码,免得有字符数据插入整数字段而造成数据库异常。

com.game.products.dao.iface 包中新建ProductsDao接口。

代码如下所示:

package com.game.products.dao.iface;

import java.util.List;

import com.game.products.model.Products;

public interface ProductsDao {
ListgetProducts();
// 获得所有记录
ListgetProducts( int pageSize, int startRow); // 获得一段记录
int getRows(); // 获得总行数
int getRows(Stringfieldname,Stringvalue); // 获得总行数
ListqueryProducts(Stringfieldname,Stringvalue); // 根据条件查询的所有记录
ListqueryProducts(Stringfieldname,Stringvalue, int pageSize, int startRow); // 根据条件查询的一段记录
ProductsgetProduct(StringgameId); // 根据ID获得记录
StringgetMaxID(); // 获得最大ID值
void addProduct(Productspd); // 添加记录
void updateProductd(Productspd); // 修改记录
void deleteProduct(Productspd); // 删除记录
}


com.game.products.dao.hibernate包中新建继承HibernateDaoSupportProductsMapDao类,并实现了ProductsDao接口。

代码如下:

package com.game.products.dao.hibernate;

import java.sql.SQLException;
import java.util.Iterator;
import java.util.List;

import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.game.products.dao.iface.ProductsDao;
import com.game.products.model.Products;


/***/ /**
*
@author cwf
*
*/

public class ProductsMapDao extends HibernateDaoSupport implements ProductsDao {

public ProductsMapDao() {}

/***/ /**
*函数说明:添加信息
*参数说明:对象
*返回值:
*/

public void addProduct(Productspd) {
this .getHibernateTemplate().save(pd);
}


/***/ /**
*函数说明:删除信息
*参数说明:对象
*返回值:
*/

public void deleteProduct(Productspd) {
this .getHibernateTemplate().delete(pd);
}


/***/ /**
*函数说明:获得所有的信息
*参数说明:
*返回值:信息的集合
*/

public ListgetProducts() {
Stringsql
= " FROMProductsORDERBYgameNameCn " ;
return this .getHibernateTemplate().find(sql);
}


/***/ /**
*函数说明:获得总行数
*参数说明:
*返回值:总行数
*/

public int getRows() {
Stringsql
= " FROMProductsORDERBYgameNameCn " ;
Listlist
= this .getHibernateTemplate().find(sql);
return list.size();
}


/***/ /**
*函数说明:获得一段记录信息
*参数说明:
*返回值:信息的集合
*/

public ListgetProducts( int pageSize, int startRow) throws HibernateException {
final int pageSize1 = pageSize;
final int startRow1 = startRow;
return this .getHibernateTemplate().executeFind( new HibernateCallback() {

public ListdoInHibernate(Sessionsession) throws HibernateException,SQLException {
Queryquery
= session.createQuery( " FROMProductsORDERBYgameNameCn " );
query.setFirstResult(startRow1);
query.setMaxResults(pageSize1);
return query.list();
}

}
);
}


/***/ /**
*函数说明:获得一条的信息
*参数说明:ID
*返回值:对象
*/

public ProductsgetProduct(StringgameId) {
return (Products) this .getHibernateTemplate().get(Products. class ,gameId);
}


/***/ /**
*函数说明:获得最大ID
*参数说明:
*返回值:最大ID
*/

public StringgetMaxID() {
Stringsql
= " SELECTMAX(gameId)+1FROMProducts " ;
StringnoStr
= null ;
Listll
= (List) this .getHibernateTemplate().find(sql);
Iteratoritr
= ll.iterator();
if (itr.hasNext()) {
Objectnoint
= itr.next();
if (noint == null ) {
noStr
= " 1 " ;
}
else {
noStr
= noint.toString();
}

}


if (noStr.length() == 1 ) {
noStr
= " 000 " + noStr;
}
else if (noStr.length() == 2 ) {
noStr
= " 00 " + noStr;
}
else if (noStr.length() == 3 ) {
noStr
= " 0 " + noStr;
}
else {
noStr
= noStr;
}

return noStr;
}


/***/ /**
*函数说明:修改信息
*参数说明:对象
*返回值:
*/

public void updateProductd(Productspd) {
this .getHibernateTemplate().update(pd);
}


/***/ /**
*函数说明:查询的所有信息
*参数说明:集合
*返回值:
*/

public ListqueryProducts(Stringfieldname,Stringvalue) {
System.out.println(
" value: " + value);
Stringsql
= " FROMProductswhere " + fieldname + " like'% " + value + " %' " + " ORDERBYgameNameCn " ;
return this .getHibernateTemplate().find(sql);
}


/***/ /**
*函数说明:获得总行数
*参数说明:
*返回值:总行数
*/

public int getRows(Stringfieldname,Stringvalue) {
Stringsql
= " FROMProductswhere " + fieldname + " like'% " + value + " %' " + " ORDERBYgameNameCn " ;
Listlist
= this .getHibernateTemplate().find(sql);
return list.size();
}


/***/ /**
*函数说明:查询的一段信息
*参数说明:集合
*返回值:
*/

public ListqueryProducts(Stringfieldname,Stringvalue, int pageSize, int startRow) {
final int pageSize1 = pageSize;
final int startRow1 = startRow;
final Stringsql = " FROMProductswhere " + fieldname + " like'% " + value + " %' " + " ORDERBYgameNameCn " ;
return this .getHibernateTemplate().executeFind( new HibernateCallback() {

public ListdoInHibernate(Sessionsession) throws HibernateException,SQLException {
Queryquery
= session.createQuery(sql);
query.setFirstResult(startRow1);
query.setMaxResults(pageSize1);
return query.list();
}

}
);
}


}



com.game.bean.hibernate包中新建hibernate.cfg.xml,代码如下:

<? xmlversion="1.0"encoding="GB2312" ?>
<! DOCTYPEhibernate-configurationPUBLIC
"-//Hibernate/HibernateConfigurationDTD3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"
>
< hibernate-configuration >
< session-factory >
< property name ="dialect" > org.hibernate.dialect.SQLServerDialect </ property >
< property name ="show_sql" > true </ property >

< mapping resource ="com/game/products/model/products.hbm.xml" ></ mapping >
</ session-factory >
</ hibernate-configuration >


至此,DAO层的代码已经编写完成。下一篇,将编写service层代码。



struts+spring+hibernate web 应用 < > Service 层代码编写

分享到:
评论

相关推荐

    struts1.2 + spring2.5 + hibernate3.2框架demo

    Struts1.2、Spring2.5和Hibernate3.2是经典的Java企业级开发框架组合,它们各自在应用程序的不同层次上发挥着重要作用。Struts1.2是一个MVC(Model-View-Controller)框架,主要负责处理用户界面与业务逻辑之间的...

    struts+spring+hibernate三大框架整合

    SSH三大框架,即Struts、Spring和Hibernate,是Java Web开发中的常用技术组合,它们各自负责不同的职责:Struts作为MVC模式中的Controller层,处理用户请求并转发到相应的业务逻辑;Spring则作为核心容器,负责依赖...

    ssh(struts+spring+hibernate)教务管理信息系统(全部代码) 可以直接运行

    SSH(Struts+Spring+Hibernate)是一个经典的Java Web开发框架,用于构建高效、可扩展的企业级应用程序。这个教务管理信息系统是基于SSH框架实现的,提供了完整的源代码,可以直接运行,便于开发者学习和参考。 **...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (1)

    12.6.16 编写Spring和Hibernate的配置文件spring-config.xml 12.6.17 编写web.xml 12.6.18 验证示例 12.7 小结 第四篇 J2EE项目案例精选 第十三章 网上调查系统 13.1 系统概述 13.2 需求分析 13.2.1 系统用例图 ...

    Struts+Spring+Hibernate开发实例.pdf

    标题和描述中指出的文档《Struts+Spring+Hibernate开发实例.pdf》包含了关于这三个流行的Java开源框架结合使用的示例代码和相关知识点。Struts负责视图与控制器部分,Spring负责业务逻辑层及依赖注入,Hibernate负责...

    struts2+spring2.5+hibernate3.2整合完整项目,带数据库脚本

    Struts2、Spring2.5和Hibernate3.2是Java Web开发中经典的三大框架,它们的整合使用在过去的许多年里被广泛应用于企业级应用系统。这个完整的项目提供了从开发环境到运行环境的所有必要组件,包括数据库脚本,使得...

    struts+spring+hibernate人力资源管理系统

    总的来说,"Struts+Spring+Hibernate人力资源管理系统"不仅是一个实际的应用案例,也是学习和掌握Java Web开发技术的良好教材。通过研究和实践这个项目,开发者可以深入理解这三个框架的协同工作原理,提高自己的...

    最新项目系统:Struts2+Spring4+Hibernate4三大框架整合

    Struts2、Spring4和Hibernate4是Java Web开发中的三大主流框架,它们分别负责MVC模式中的表现层、业务层和服务层。这个最新的项目系统整合了这三个框架,旨在提供一个高效、灵活且易于维护的开发环境。下面将详细...

    SSH(Struts+Spring+Hibernate)结合项目简单实例

    SSH(Struts+Spring+Hibernate)是Java Web开发中一种常见的技术栈,它将MVC设计模式、依赖注入和持久层框架集成为一个整体,大大提高了开发效率和代码的可维护性。下面我们将深入探讨SSH框架的各个组成部分及其结合...

    struts2+spring4+hibernate

    Struts2、Spring4和Hibernate是Java开发中的三大框架,它们在构建企业级Web应用程序时起着核心作用。本教程将深入探讨这三个框架如何协同工作,以实现高效、灵活和可扩展的电子商务平台。 首先,Struts2是一个基于...

    Struts2+Spring+Hibernate和Struts2+Spring+Ibatis

    Struts2+Spring+Hibernate和Struts2+Spring+Ibatis是两种常见的Java Web应用程序集成框架,它们分别基于ORM框架Hibernate和轻量级数据访问框架Ibatis。这两种框架结合Spring,旨在提供一个强大的、可扩展的、易于...

    struts+spring+hibernate(mysql)用户登录及文件上传

    Struts、Spring 和 Hibernate 是Java Web开发中的三大框架,它们结合使用可以构建高效、模块化的应用程序,特别是对于处理用户登录和文件上传等常见功能。在这个项目中,"struts+spring+hibernate(mysql)用户登录及...

    struts+spring+hibernate

    1. **源代码**:包含Struts的Action类、Spring的配置文件(如 applicationContext.xml 和struts-config.xml 或 struts2的配置文件)、Hibernate的实体类、映射文件以及DAO(数据访问对象)层。 2. **Web部署描述符*...

    java web 实战宝典_JSP+Servlet+Struts_2+Hibernate+Spring+Ajax

    这本“java web 实战宝典_JSP+Servlet+Struts_2+Hibernate+Spring+Ajax”涵盖了JSP和Servlet作为Web基础技术的知识,以及Struts 2、Spring、Hibernate三个主流的SSH框架,并且提供了Ajax技术的应用介绍。这是一本...

    Struts+Spring+Hibernate组装web应用

    本文将探讨如何使用三种流行的开源框架——Struts、Spring 和 Hibernate 来实现 Web 应用程序的架构设计,以及如何确保各层之间的松耦合。 #### 为什么要使用框架? - **减轻复杂度**:框架帮助开发者避免重复造...

    Struts1+Spring2+Hibernate2整合详细例子

    Struts1、Spring2和Hibernate2是Java Web开发中的三个重要框架,它们分别负责MVC模式中的表现层、业务层和服务层。这个整合例子旨在展示如何将这三个框架协同工作,以构建一个完整的Java Web应用程序。 Struts1是...

    Struts2+Spring4+Hibernate5整合

    Struts2、Spring4和Hibernate5是Java Web开发中的三个重要框架,它们分别负责MVC模式中的动作控制、依赖注入和持久化管理。这三者的整合可以构建出高效、稳定且易于维护的企业级应用。 **Struts2** 是一个基于MVC...

    Struts+Spring+Hibernate快速入门

    Struts+Spring+Hibernate 整合是开发Java Web应用程序的一种常见模式,也称为SSH框架。这个框架组合提供了从前端到后端的完整解决方案,适用于构建三层架构的应用程序。以下是关于这个话题的详细说明: 1. **Struts...

Global site tag (gtag.js) - Google Analytics