SpringMVC+Hibernate+Spring整合实例(二)

首先是web包下属于的control层的类UserController,这相当于Struts中的Action,是重要的类:

  1. package com.tgb.web; 
  2.  
  3. import java.io.IOException; 
  4. import java.io.PrintWriter; 
  5.  
  6. import javax.annotation.Resource; 
  7. import javax.servlet.http.HttpServletRequest; 
  8. import javax.servlet.http.HttpServletResponse; 
  9.  
  10. import org.springframework.stereotype.Controller; 
  11. import org.springframework.web.bind.annotation.RequestMapping; 
  12.  
  13. import com.tgb.entity.User; 
  14. import com.tgb.manager.UserManager; 
  15.  
  16. @Controller 
  17. @RequestMapping("/user") 
  18. public class UserController { 
  19.  
  20.     @Resource(name="userManager") 
  21.     private UserManager userManager; 
  22.  
  23.     @RequestMapping("/getAllUser") 
  24.     public String getAllUser(HttpServletRequest request){ 
  25.          
  26.         request.setAttribute("userList", userManager.getAllUser()); 
  27.          
  28.         return "/index"; 
  29.     } 
  30.      
  31.     @RequestMapping("/getUser") 
  32.     public String getUser(String id,HttpServletRequest request){ 
  33.          
  34.         request.setAttribute("user", userManager.getUser(id)); 
  35.      
  36.         return "/editUser"; 
  37.     } 
  38.      
  39.     @RequestMapping("/toAddUser") 
  40.     public String toAddUser(){ 
  41.         return "/addUser"; 
  42.     } 
  43.      
  44.     @RequestMapping("/addUser") 
  45.     public String addUser(User user,HttpServletRequest request){ 
  46.          
  47.         userManager.addUser(user); 
  48.          
  49.         return "redirect:/user/getAllUser"; 
  50.     } 
  51.      
  52.     @RequestMapping("/delUser") 
  53.     public void delUser(String id,HttpServletResponse response){ 
  54.          
  55.         String result = "{\"result\":\"error\"}"; 
  56.          
  57.         if(userManager.delUser(id)){ 
  58.             result = "{\"result\":\"success\"}"; 
  59.         } 
  60.          
  61.         response.setContentType("application/json"); 
  62.          
  63.         try { 
  64.             PrintWriter out = response.getWriter(); 
  65.             out.write(result); 
  66.         } catch (IOException e) { 
  67.             e.printStackTrace(); 
  68.         } 
  69.     } 
  70.      
  71.     @RequestMapping("/updateUser") 
  72.     public String updateUser(User user,HttpServletRequest request){ 
  73.          
  74.         if(userManager.updateUser(user)){ 
  75.             user = userManager.getUser(user.getId()); 
  76.             request.setAttribute("user", user); 
  77.             return "redirect:/user/getAllUser"; 
  78.         }else{ 
  79.             return "/error"; 
  80.         } 
  81.     } 

然后是属于manager包下的业务逻辑类,接口UserManager:

  1. package com.tgb.manager; 
  2.  
  3. import java.util.List; 
  4.  
  5. import com.tgb.entity.User; 
  6.  
  7. public interface UserManager { 
  8.  
  9.     public User getUser(String id); 
  10.      
  11.     public List<User> getAllUser(); 
  12.      
  13.     public void addUser(User user); 
  14.      
  15.     public boolean delUser(String id); 
  16.      
  17.     public boolean updateUser(User user); 

实现类UserManagerImpl:

  1. package com.tgb.manager; 
  2.  
  3. import java.util.List; 
  4.  
  5. import com.tgb.dao.UserDao; 
  6. import com.tgb.entity.User; 
  7.  
  8. public class UserManagerImpl implements UserManager { 
  9.  
  10.     private UserDao userDao; 
  11.      
  12.     public void setUserDao(UserDao userDao) { 
  13.         this.userDao = userDao; 
  14.     } 
  15.  
  16.     @Override 
  17.     public User getUser(String id) { 
  18.         return userDao.getUser(id); 
  19.     } 
  20.  
  21.     @Override 
  22.     public List<User> getAllUser() { 
  23.         return userDao.getAllUser(); 
  24.     } 
  25.  
  26.     @Override 
  27.     public void addUser(User user) { 
  28.         userDao.addUser(user); 
  29.     } 
  30.  
  31.     @Override 
  32.     public boolean delUser(String id) { 
  33.          
  34.         return userDao.delUser(id); 
  35.     } 
  36.  
  37.     @Override 
  38.     public boolean updateUser(User user) { 
  39.         return userDao.updateUser(user); 
  40.     } 
  41.  

最后是属于dao包底下的DAO层,主要由Hibernate完成。接口UserDao:

  1. package com.tgb.dao; 
  2.  
  3. import java.util.List; 
  4.  
  5. import com.tgb.entity.User; 
  6.  
  7. public interface UserDao { 
  8.  
  9.     public User getUser(String id); 
  10.      
  11.     public List<User> getAllUser(); 
  12.      
  13.     public void addUser(User user); 
  14.      
  15.     public boolean delUser(String id); 
  16.      
  17.     public boolean updateUser(User user); 

实现类UserDaoImpl:

  1. package com.tgb.dao; 
  2.  
  3. import java.util.List; 
  4.  
  5. import org.hibernate.Query; 
  6. import org.hibernate.SessionFactory; 
  7.  
  8. import com.tgb.entity.User; 
  9.  
  10. public class UserDaoImpl implements UserDao { 
  11.  
  12.     private SessionFactory sessionFactory; 
  13.  
  14.     public void setSessionFactory(SessionFactory sessionFactory) { 
  15.         this.sessionFactory = sessionFactory; 
  16.     } 
  17.      
  18.     @Override 
  19.     public User getUser(String id) { 
  20.          
  21.         String hql = "from User u where u.id=?"; 
  22.         Query query = sessionFactory.getCurrentSession().createQuery(hql); 
  23.         query.setString(0, id); 
  24.          
  25.         return (User)query.uniqueResult(); 
  26.     } 
  27.  
  28.     @Override 
  29.     public List<User> getAllUser() { 
  30.          
  31.         String hql = "from User"; 
  32.         Query query = sessionFactory.getCurrentSession().createQuery(hql); 
  33.          
  34.         return query.list(); 
  35.     } 
  36.  
  37.     @Override 
  38.     public void addUser(User user) { 
  39.         sessionFactory.getCurrentSession().save(user); 
  40.     } 
  41.  
  42.     @Override 
  43.     public boolean delUser(String id) { 
  44.          
  45.         String hql = "delete User u where u.id = ?"; 
  46.         Query query = sessionFactory.getCurrentSession().createQuery(hql); 
  47.         query.setString(0, id); 
  48.          
  49.         return (query.executeUpdate() > 0); 
  50.     } 
  51.  
  52.     @Override 
  53.     public boolean updateUser(User user) { 
  54.          
  55.         String hql = "update User u set u.userName = ?,u.age=? where u.id = ?"; 
  56.         Query query = sessionFactory.getCurrentSession().createQuery(hql); 
  57.         query.setString(0, user.getUserName()); 
  58.         query.setString(1, user.getAge()); 
  59.         query.setString(2, user.getId()); 
  60.          
  61.         return (query.executeUpdate() > 0); 
  62.     } 
  63.  

最后外加一个配置spring-beans.xml,放在config.spring包下,负责为各层依赖注入需要的对象:

  1. <?xml version="1.0" encoding="UTF-8"?> 
  2. <beans xmlns="http://www.springframework.org/schema/beans" 
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  4.     xmlns:context="http://www.springframework.org/schema/context" 
  5.     xmlns:mvc="http://www.springframework.org/schema/mvc" 
  6.     xsi:schemaLocation="http://www.springframework.org/schema/beans  
  7.     http://www.springframework.org/schema/beans/spring-beans.xsd"> 
  8.      
  9.     <bean id="userDao" class="com.tgb.dao.UserDaoImpl"> 
  10.         <property name="sessionFactory" ref="sessionFactory"></property> 
  11.     </bean> 
  12.  
  13.     <bean id="userManagerBase" class="com.tgb.manager.UserManagerImpl"> 
  14.         <property name="userDao" ref="userDao"></property> 
  15.     </bean> 
  16.      
  17.     <!-- 此处为代理 --> 
  18.     <bean name="userManager" parent="transactionProxy"> 
  19.         <property name="target" ref="userManagerBase"></property> 
  20.     </bean>    
  21. </beans> 

到此为止,所有的配置和代码完成,部署—运行,运行结果如下图:



这个小实例结束,下篇将对SpringMVC和Struts2做一个对比。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值