`
kong0itey
  • 浏览: 304009 次
社区版块
存档分类
最新评论

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

    博客分类:
  • java
 
阅读更多

前一篇文章 (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 包中新建继承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(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框架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则作为核心容器,负责依赖...

    struts+spring+hibernate实列

    &lt;br&gt;=======================&lt;br&gt;步骤:&lt;br&gt;1:配置hibernate,生成po和映射文件 ok&lt;br&gt;2:制作dao,测试 ok &lt;br&gt;3:制作service,测试 ok&lt;br&gt;4:加入Spring IoC,测试 ok&lt;br&gt;5:加入AOP,测试 ok&lt;br&gt;6:加入Struts,...

    Maven下搭建Struts2+spring+hibernate框架

    在完成上述配置后,开发者可以创建Action类(Struts2的控制器),Service层(Spring的业务逻辑),DAO层(数据访问对象,使用Hibernate进行数据库操作),以及相应的视图(JSP页面)。通过Maven的生命周期管理,可以...

    搞定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 系统用例图 ...

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

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

    Struts+Spring+Hibernate开发实例.pdf

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

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

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

    struts2+spring4+hibernate

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

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

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

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

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

    Struts2+Spring+Hibernate和Struts2+Spring+Ibatis

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

    在Netbeans中使用Struts2.0+Spring2.5+Hibernate框架

    在项目源代码目录中创建四个包:`po`(持久化对象)、`dao`(数据访问对象)、`service`(业务逻辑层)以及`action`(Struts的Action)。 #### 三、模型层开发 ##### 1. 构建实体类 在`po`包中创建`User`类: ```...

    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部署描述符*...

    spring+struts+hibernate+dwr+jstl做的实例

    logging.jar&lt;br&gt;log4j-1.2.14.jar&lt;br&gt;spring-dao.jar&lt;br&gt;spring-hibernate3.jar&lt;br&gt;spring-ibatis.jar&lt;br&gt;spring-jdbc.jar&lt;br&gt;spring-jdo.jar&lt;br&gt;spring-jpa.jar&lt;br&gt;spring-toplink.jar&lt;br&gt;persistence.jar&lt;br&gt;...

    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技术的应用介绍。这是一本...

    Struts1+Spring2+Hibernate2整合详细例子

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

Global site tag (gtag.js) - Google Analytics