Dict.CN 在线词典, 英语学习, 在线翻译

都市淘沙者

荔枝FM Everyone can be host

统计

留言簿(23)

积分与排名

优秀学习网站

友情连接

阅读排行榜

评论排行榜

使用Spring 的MVC+Hibernate的数据库操作例子(转)

网上讲Spring的资料很多,大部分实例都是针对Spring的某一部分做出的例子,如IoC,Aop,MVC,数据持久层等等,没有一个完整的例子。

这两天根据夏昕的Spring开发指南,在加上自己参考其他资料,做出了一个利用Spring的MVC,加上Hibernate的网站的实例,包括Jsp界面表单的提交,Spring的 MVC控制,使用Spring提供的HibernateTemplate进行数据持久的完整例子.

下面把程序的详细代码贴出来,由于自己也是初学,有不对的地方,还请过路的大侠指点一二。

一、需求:表单填写用户ID,用户名和地址,写入数据库

二、具体实现。。。。  代码见详细内容


网上讲Spring的资料很多,大部分实例都是针对Spring的某一部分做出的例子,如Ioc,Aop,MVC,数据持久层等等,没有一个完整的例子。

这两天根据夏昕的Spring开发指南,在加上自己参考其他资料,做出了一个利用Spring的MVC,加上Hibernate的网站的实例,包括Jsp界面表单的提交,Spring的 MVC控制,使用Spring提供的HibernateTemplate进行数据持久的完整例子.

下面把程序的详细代码贴出来,自己也是初学,有不对的地方,还请过路的大侠指点一二。

一、需求:表单填写用户ID,用户名和地址,写入数据库

二、具体实现

1.UserInfoAdd.jsp

填写表单界面,输入ID,Name,Address后提交到UserInfoAddAction.do



UserID:Name:


Address:
  


2.UserInfoVO 

表单的映射。 Value Object类,用来获取表单提交的数据

 package com.kacakong.spring.vo;

public class UserInfoVO {
 public String nid;
 public String name;
 public String address;
 public String getAddress() {
  return address;
 }

 public void setAddress(String address) {
  this.address = address;
 }

 public String getName() {
  return name;
 }

 public void setName(String name) {
  this.name = name;
 }

 public String getNid() {
  return nid;
 }
 

 public void setNid(String nid) {
  this.nid = nid;
 }
 

}

 

3.UserInfoAddAction

Control类,根据Spring的配置文件,调用合适的接口,执行业务操作,控制页面转向。如果添加数据成功,就重定向到成功页面,如果失败,就装到操作失败页面。具体调用的操作类,是根据Spring的配置文件来找的。使用的是接口操作,而不是实现类的操作。

package com.kacakong.spring.action;

import org.springframework.validation.BindException;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController;

import com.kacakong.hibernate.dao.UserInfoDAO;
import com.kacakong.hibernate.pojos.UserInfo;
import com.kacakong.spring.vo.UserInfoVO;

public class UserInfoAddAction extends SimpleFormController {
 
 private String fail_view;

 private String success_view;
 
 protected ModelAndView onSubmit(Object cmd, BindException ex)
   throws Exception {
  UserInfoVO vo = (UserInfoVO) cmd;
  
  UserInfo userinfo=new UserInfo();
  userinfo.setNid(Integer.valueOf(vo.getNid()));
  userinfo.setName(vo.getName());
  userinfo.setAddress(vo.getAddress());
  
  if (this.doAdd(userinfo)==1){
     return new ModelAndView(this.getSuccess_view());
  }else{
     return new ModelAndView(this.getFail_view());
  }
      
 }

 private int doAdd(UserInfo userinfo) { 
  WebApplicationContext  ctx=this.getWebApplicationContext();
  UserInfoDAO dao=(UserInfoDAO)ctx.getBean("UserInfoDAO");
  try{
   dao.save(userinfo);
   return 1;
  }catch(Exception e){   
   e.printStackTrace();
   return 0;
  }
 }
 
 public String getFail_view() {
  return fail_view;
 }

 public String getSuccess_view() {
  return success_view;
 }

 public void setFail_view(String string) {
  fail_view = string;
 }

 public void setSuccess_view(String string) {
  success_view = string;
 }

}
 

4.UserInfo

PO类,数据model层的反映,与数据库建立O/R mapping的映射

 package com.kacakong.hibernate.pojos;

public class UserInfo {
 public Integer nid;
 public String name;
 public String address;
 public String getAddress() {
  return address;
 }
 
 public void setAddress(String address) {
  this.address = address;
 }
 
 public String getName() {
  return name;
 }
 
 public void setName(String name) {
  this.name = name;
 }

 public Integer getNid() {
  return nid;
 }
 

 public void setNid(Integer nid) {
  this.nid = nid;
 }
 


 

5.UserInfo.hbm.xml

PO的hibernate O/R mapping定义文件,这里的ID我设置成了assigned程序获取

    "-//Hibernate/Hibernate Mapping DTD 2.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">


   dynamic-update="false" dynamic-insert="false"
  select-before-update="false" optimistic-lock="version" >
  
           
       
     insert="true" access="property" column="name" length="50"
   not-null="true" />
     insert="true" access="property" column="address" length="50"
   not-null="true" />
 


 

6.UserInfoDAO

接口类,只定义了实现方法名称

 package com.kacakong.hibernate.dao;

import com.kacakong.hibernate.pojos.UserInfo;

public interface UserInfoDAO {
  public abstract UserInfo get(Integer integer);
  public abstract void save(UserInfo userinfo);
}

 

7.UserInfoDAOImp

UserInfoDAO接口的实现,继承了HibernateDaoSupport

 package com.kacakong.hibernate.dao;

 

import org.springframework.orm.hibernate.support.HibernateDaoSupport;

import com.kacakong.hibernate.pojos.UserInfo;

public class UserInfoDAOImp  extends HibernateDaoSupport implements UserInfoDAO {

 public UserInfo get(Integer id) {
  UserInfo userinfo=(UserInfo)this.getHibernateTemplate().get(UserInfo.class,id);
  return userinfo;
 }

 public void save(UserInfo userinfo) {
     this.getHibernateTemplate().save(userinfo);
 }

}

 

8.Web.xml的配置


http://java.sun.com/dtd/web-app_2_3.dtd">


   
  Dispatcher
  org.springframework.web.servlet.DispatcherServlet
  
   contextConfigLocation
   /WEB-INF/Config.xml /WEB-INF/Hibernate-Context.xml
  

 

 
  Dispatcher
  *.do
 

 
  index.jsp
 

 
  404
  /error.jsp
 


 

9.Config.xml的定义


 "http://www.springframework.org/dtd/spring-beans.dtd">

 
   class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  
   org.springframework.web.servlet.view.JstlView
  

  
   
  

  
   .jsp
  

 

 
   class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
  
   
    UserInfoAddAction
   

  

 

 
   class="com.kacakong.spring.action.UserInfoAddAction">
  
   com.kacakong.spring.vo.UserInfoVO
  

  
   fail
  

  
   UserInfo
  

 


10.Hibernate-Context.xml的定义


"http://www.springframework.org/dtd/spring-beans.dtd">

 
  
   oracle.jdbc.driver.OracleDriver
  

  
   jdbc:oracle:thin:@192.168.100.8:1521:EASTPLUS
  

  
   spring
  

  
   spring
  

 


    com/kacakong/hibernate/pojos/UserInfo.hbm.xml

  

  
   
    net.sf.hibernate.dialect.SQLServerDialect 
    true
   

   
    PROPAGATION_REQUIRED
    PROPAGATION_REQUIRED,readOnly
   

posted on 2006-02-23 19:27 都市淘沙者 阅读(7008) 评论(3)  编辑  收藏 所属分类: Spring+Struts+Hibernate

评论

# re: 使用Spring 的MVC+Hibernate的数据库操作例子(转) 2013-01-23 10:30 t

ewr  回复  更多评论   

# re: 使用Spring 的MVC+Hibernate的数据库操作例子(转)[未登录] 2014-08-21 00:46 aa

vvv  回复  更多评论   

# re: 使用Spring 的MVC+Hibernate的数据库操作例子(转) 2014-12-05 13:52 企鹅王

企鹅  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航: