- 浏览: 305866 次
文章分类
最新评论
-
流年末年:
那四个参数还是没看懂.....能不能解释下showPassst ...
我写的密码强度验证方法(原创) -
kingcs2008:
// 验证pws.jsshowPassstrength(&qu ...
我写的密码强度验证方法(原创) -
h957355152:
请问博主这个怎么用呢?我直接放到jsp里面调用showPass ...
我写的密码强度验证方法(原创) -
qq_15138059:
我写的全国省市县三级联动菜单,拿出来和大家分享了(原创) -
valenon:
评论呢?从MAIL FROM命令开始貌似就出错了:500 Er ...
如何发送伪造的电子邮件
前一篇文章 (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
类,代码如下:
<! 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
类,代码如下:
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 接口。
代码如下所示:
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 接口。
代码如下:
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
,代码如下:
<! 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 层代码。
发表评论
-
java正则表达式高级用法:转换驼峰标示
2012-06-26 16:47 5825String source = "LastLog ... -
你会做Web上的用户登录功能吗?(转)
2012-06-25 13:22 1386Web上的用户登录功能应 ... -
使用pager-taglib.jar实现的分页技术
2012-06-24 02:34 953//1.导入pager-taglib.jar包; / ... -
我写的验证码生成方案,可防止绝大多数机械识别。
2012-06-20 14:59 2414web.xml <!DOCTYPE web-app ... -
如何在myeclipse中使用maven?
2012-06-11 14:22 168491.下载maven,解压到D盘ma ... -
安装subclipse, MyEclipse8 SVN插件
2012-06-09 22:39 970安装subclipse, MyEclipse8 SVN插件 ... -
PDF生成器
2012-05-28 02:53 856我自己写的一个pdf生成器,能导出百度博客为PDF -
我的自动投票器
2012-04-17 13:58 1303自动投票器,支持windows的32位机器 下面的压缩包是编 ... -
list,set,map,数组间的相互转换(转载)
2012-03-16 16:29 28781.list转set Java代码 ... -
一个给pojo生成hashcode、equals、toString等方法的工具类
2012-03-06 09:52 4263一个给pojo生成hashcode、equals、toStri ... -
ehcache的用法
2012-02-13 22:13 0Spring ... -
使用ehcache来缓存页面
2012-02-13 22:08 826关于缓存的话题,在坛子里已经有很多讨论,简单的来说,如果一个应 ... -
java笔记:自己动手写javaEE框架(二)--业务层Service以及Service单元测试
2012-02-13 00:55 0前一篇博文里有三 ... -
struts+spring+hibernate的web应用<四> Web层代码编写(2)
2012-02-13 00:50 0接着就是写资源文件了。 在 com.game. ... -
struts+spring+hibernate的web应用<四> Web层代码编写(1)
2012-02-13 00:49 1050前面的文章: ... -
struts+spring+hibernate的web应用<三> Service层代码编写
2012-02-13 00:46 886前面的文章: ... -
struts+spring+hibernate的web应用<一> 架构搭建
2012-02-13 00:44 781许久没有些文章了,现 ... -
ehcache缓存管理
2012-02-12 23:52 1014EHCache 是一个纯java的,在Hibernate2 ... -
检测一个字符串是否在jvm的常量池中(原创)
2012-01-11 09:07 2180检测一个字符串是否在jvm的常量池中 public ... -
我写的密码强度验证方法(原创)
2011-12-18 15:26 8403/* *说明: * 该方法主要分析密码的内容构成 ...
相关推荐
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和Hibernate是Java开发中的三大框架,它们在构建企业级Web应用程序时起着核心作用。本教程将深入探讨这三个框架如何协同工作,以实现高效、灵活和可扩展的电子商务平台。 首先,Struts2是一个基于...
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>...
这本“java web 实战宝典_JSP+Servlet+Struts_2+Hibernate+Spring+Ajax”涵盖了JSP和Servlet作为Web基础技术的知识,以及Struts 2、Spring、Hibernate三个主流的SSH框架,并且提供了Ajax技术的应用介绍。这是一本...