前一篇文章
(struts+spring+hibernate
的
web
应用
<
一
>
架构搭建
)
让我们打好了架子,接下来就来编写代码了。在编码之前,我们需要先自行了解
strust,spring,hibernate
基础知识,后面的文章将不会过多的介绍这些框架的基础知识。整个项目由
Dao,Services,Web
三层组成,
Dao
层主要通过
hibernate
来操作数据库,
Service
层主要体现了业务,事务的处理,
Web
层由
struts
来控制。整个项目的控制交由
spring
管理。
现在的这个小项目除了完成基本的添删改查,还有一个简单的分页功能。这个分页功能不仅前台分页,而且在后台数据库也进行了分页处理。
现在就来编写
Dao
层的代码。
首先写好
pojo
的代码:
在
com.game.products.model
中新建
products.hbm.xml
类,代码如下:
<?
xml version="1.0" encoding="GB2312"
?>
<!
DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.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
String gameId;
//
编号
private
String gameNameCn;
//
中文名称
private
String gameNameEn;
//
英文名称
private
String gameCapacity;
//
碟数
private
String gameVersion;
//
版本
private
String gameMedia;
//
介质
private
String gameCopyright;
//
版权
private
String gamePrice;
//
价格
private
String gameContent;
//
攻略
//
Constructors
public
Products()
{}
//
Property accessors
public
String getGameCapacity()
{
return
gameCapacity;
}

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

public
String getGameId()
{
return
gameId;
}

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

public
String getGameNameCn()
{
return
gameNameCn;
}

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

public
String getGameNameEn()
{
return
gameNameEn;
}

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

public
String getGameVersion()
{
return
gameVersion;
}

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

public
String getGameMedia()
{
return
gameMedia;
}

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

public
String getGameCopyright()
{
return
gameCopyright;
}

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

public
String getGameContent()
{
return
gameContent;
}

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

public
String getGamePrice()
{
return
gamePrice;
}

public
void
setGamePrice(String gamePrice)
{
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
{
List getProducts();
//
获得所有记录
List getProducts(
int
pageSize,
int
startRow);
//
获得一段记录
int
getRows();
//
获得总行数
int
getRows(String fieldname,String value);
//
获得总行数
List queryProducts(String fieldname,String value);
//
根据条件查询的所有记录
List queryProducts(String fieldname,String value,
int
pageSize,
int
startRow);
//
根据条件查询的一段记录
Products getProduct(String gameId);
//
根据ID获得记录
String getMaxID();
//
获得最大ID值
void
addProduct(Products pd);
//
添加记录
void
updateProductd(Products pd);
//
修改记录
void
deleteProduct(Products pd);
//
删除记录
}
在com.game.products.dao.hibernate
包中新建继承HibernateDaoSupport
的ProductsMapDao
类,并实现了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(Products pd)
{
this
.getHibernateTemplate().save(pd);
}

/**
* 函数说明:删除信息
* 参数说明: 对象
* 返回值:
*/
public
void
deleteProduct(Products pd)
{
this
.getHibernateTemplate().delete(pd);
}

/**
* 函数说明:获得所有的信息
* 参数说明:
* 返回值:信息的集合
*/
public
List getProducts()
{
String sql
=
"
FROM Products ORDER BY gameNameCn
"
;
return
this
.getHibernateTemplate().find(sql);
}
/**
* 函数说明:获得总行数
* 参数说明:
* 返回值:总行数
*/
public
int
getRows()
{
String sql
=
"
FROM Products ORDER BY gameNameCn
"
;
List list
=
this
.getHibernateTemplate().find(sql);
return
list.size();
}
/**
* 函数说明:获得一段记录信息
* 参数说明:
* 返回值:信息的集合
*/
public
List getProducts(
int
pageSize,
int
startRow)
throws
HibernateException
{
final
int
pageSize1
=
pageSize;
final
int
startRow1
=
startRow;
return
this
.getHibernateTemplate().executeFind(
new
HibernateCallback()
{

public
List doInHibernate(Session session)
throws
HibernateException, SQLException
{
Query query
=
session.createQuery(
"
FROM Products ORDER BY gameNameCn
"
);
query.setFirstResult(startRow1);
query.setMaxResults(pageSize1);
return
query.list();
}
}
);
}

/**
* 函数说明:获得一条的信息
* 参数说明: ID
* 返回值:对象
*/
public
Products getProduct(String gameId)
{
return
(Products)
this
.getHibernateTemplate().get(Products.
class
,gameId);
}

/**
* 函数说明:获得最大ID
* 参数说明:
* 返回值:最大ID
*/
public
String getMaxID()
{
String sql
=
"
SELECT MAX(gameId)+1 FROM Products
"
;
String noStr
=
null
;
List ll
=
(List)
this
.getHibernateTemplate().find(sql);
Iterator itr
=
ll.iterator();
if
(itr.hasNext())
{
Object noint
=
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(Products pd)
{
this
.getHibernateTemplate().update(pd);
}

/**
* 函数说明:查询的所有信息
* 参数说明: 集合
* 返回值:
*/
public
List queryProducts(String fieldname,String value)
{
System.out.println(
"
value:
"
+
value);
String sql
=
"
FROM Products where
"
+
fieldname
+
"
like '%
"
+
value
+
"
%'
"
+
"
ORDER BY gameNameCn
"
;
return
this
.getHibernateTemplate().find(sql);
}
/**
* 函数说明:获得总行数
* 参数说明:
* 返回值:总行数
*/
public
int
getRows(String fieldname,String value)
{
String sql
=
"
FROM Products where
"
+
fieldname
+
"
like '%
"
+
value
+
"
%'
"
+
"
ORDER BY gameNameCn
"
;
List list
=
this
.getHibernateTemplate().find(sql);
return
list.size();
}
/**
* 函数说明:查询的一段信息
* 参数说明: 集合
* 返回值:
*/
public
List queryProducts(String fieldname,String value,
int
pageSize,
int
startRow)
{
final
int
pageSize1
=
pageSize;
final
int
startRow1
=
startRow;
final
String sql
=
"
FROM Products where
"
+
fieldname
+
"
like '%
"
+
value
+
"
%'
"
+
"
ORDER BY gameNameCn
"
;
return
this
.getHibernateTemplate().executeFind(
new
HibernateCallback()
{

public
List doInHibernate(Session session)
throws
HibernateException, SQLException
{
Query query
=
session.createQuery(sql);
query.setFirstResult(startRow1);
query.setMaxResults(pageSize1);
return
query.list();
}
}
);
}

}
在com.game.bean.hibernate
包中新建hibernate.cfg.xml
,代码如下:
<?
xml version="1.0" encoding="GB2312"
?>
<!
DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.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
层代码。
分享到:
相关推荐
Struts1.2、Spring2.5和Hibernate3.2是经典的Java企业级开发框架组合,它们各自在应用程序的不同层次上发挥着重要作用。Struts1.2是一个MVC(Model-View-Controller)框架,主要负责处理用户界面与业务逻辑之间的...
SSH三大框架,即Struts、Spring和Hibernate,是Java Web开发中的常用技术组合,它们各自负责不同的职责:Struts作为MVC模式中的Controller层,处理用户请求并转发到相应的业务逻辑;Spring则作为核心容器,负责依赖...
<br>=======================<br>步骤:<br>1:配置hibernate,生成po和映射文件 ok<br>2:制作dao,测试 ok <br>3:制作service,测试 ok<br>4:加入Spring IoC,测试 ok<br>5:加入AOP,测试 ok<br>6:加入Struts,...
在完成上述配置后,开发者可以创建Action类(Struts2的控制器),Service层(Spring的业务逻辑),DAO层(数据访问对象,使用Hibernate进行数据库操作),以及相应的视图(JSP页面)。通过Maven的生命周期管理,可以...
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 系统用例图 ...
SSH(Struts+Spring+Hibernate)是一个经典的Java Web开发框架,用于构建高效、可扩展的企业级应用程序。这个教务管理信息系统是基于SSH框架实现的,提供了完整的源代码,可以直接运行,便于开发者学习和参考。 **...
标题和描述中指出的文档《Struts+Spring+Hibernate开发实例.pdf》包含了关于这三个流行的Java开源框架结合使用的示例代码和相关知识点。Struts负责视图与控制器部分,Spring负责业务逻辑层及依赖注入,Hibernate负责...
Struts2、Spring2.5和Hibernate3.2是Java Web开发中经典的三大框架,它们的整合使用在过去的许多年里被广泛应用于企业级应用系统。这个完整的项目提供了从开发环境到运行环境的所有必要组件,包括数据库脚本,使得...
Struts2、Spring4和Hibernate4是Java Web开发中的三大主流框架,它们分别负责MVC模式中的表现层、业务层和服务层。这个最新的项目系统整合了这三个框架,旨在提供一个高效、灵活且易于维护的开发环境。下面将详细...
SSH(Struts+Spring+Hibernate)是Java Web开发中一种常见的技术栈,它将MVC设计模式、依赖注入和持久层框架集成为一个整体,大大提高了开发效率和代码的可维护性。下面我们将深入探讨SSH框架的各个组成部分及其结合...
Struts2+Spring+Hibernate和Struts2+Spring+Ibatis是两种常见的Java Web应用程序集成框架,它们分别基于ORM框架Hibernate和轻量级数据访问框架Ibatis。这两种框架结合Spring,旨在提供一个强大的、可扩展的、易于...
在项目源代码目录中创建四个包:`po`(持久化对象)、`dao`(数据访问对象)、`service`(业务逻辑层)以及`action`(Struts的Action)。 #### 三、模型层开发 ##### 1. 构建实体类 在`po`包中创建`User`类: ```...
### Struts+Spring+Hibernate 组装 Web 应用 #### 概述 在现代软件开发中,特别是在 Java 领域,为了构建高度模块化、易于维护的 Web 应用程序,通常会采用多种框架和技术相结合的方式。本文将探讨如何使用三种...
Struts、Spring 和 Hibernate 是Java Web开发中的三大框架,它们结合使用可以构建高效、模块化的应用程序,特别是对于处理用户登录和文件上传等常见功能。在这个项目中,"struts+spring+hibernate(mysql)用户登录及...
1. **源代码**:包含Struts的Action类、Spring的配置文件(如 applicationContext.xml 和struts-config.xml 或 struts2的配置文件)、Hibernate的实体类、映射文件以及DAO(数据访问对象)层。 2. **Web部署描述符*...
Struts、Spring和Hibernate这三个框架分别针对Web应用的不同层面提供了相应的解决方案: - **Struts**:主要负责Web应用的表现层,用于简化MVC模式的应用开发。 - **Spring**:是一个轻量级的控制反转(IoC)和面向...
logging.jar<br>log4j-1.2.14.jar<br>spring-dao.jar<br>spring-hibernate3.jar<br>spring-ibatis.jar<br>spring-jdbc.jar<br>spring-jdo.jar<br>spring-jpa.jar<br>spring-toplink.jar<br>persistence.jar<br>...
### Struts2+Spring3+Hibernate整合 #### 一、简介与背景 本文将详细介绍如何实现Struts2、Spring3和Hibernate三个框架的整合。这种整合通常被称为SSH(Struts2-Spring-Hibernate)框架集成,是Java Web开发中非常...
这本“java web 实战宝典_JSP+Servlet+Struts_2+Hibernate+Spring+Ajax”涵盖了JSP和Servlet作为Web基础技术的知识,以及Struts 2、Spring、Hibernate三个主流的SSH框架,并且提供了Ajax技术的应用介绍。这是一本...