您的位置:首页 > 编程语言 > Java开发

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

2014-12-03 19:54 585 查看
首先是web包下属于的control层的类UserController,这相当于Struts中的Action,是重要的类:

[java]
view plaincopy

package com.tgb.web; 
 
import java.io.IOException; 
import java.io.PrintWriter; 
 
import javax.annotation.Resource; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
 
import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestMapping; 
 
import com.tgb.entity.User; 
import com.tgb.manager.UserManager; 
 
@Controller 
@RequestMapping("/user") 
public class UserController { 
 
    @Resource(name="userManager") 
    private UserManager userManager; 
 
    @RequestMapping("/getAllUser") 
    public String getAllUser(HttpServletRequest request){ 
         
        request.setAttribute("userList", userManager.getAllUser()); 
         
        return "/index"; 
    } 
     
    @RequestMapping("/getUser") 
    public String getUser(String id,HttpServletRequest request){ 
         
        request.setAttribute("user", userManager.getUser(id)); 
     
        return "/editUser"; 
    } 
     
    @RequestMapping("/toAddUser") 
    public String toAddUser(){ 
        return "/addUser"; 
    } 
     
    @RequestMapping("/addUser") 
    public String addUser(User user,HttpServletRequest request){ 
         
        userManager.addUser(user); 
         
        return "redirect:/user/getAllUser"; 
    } 
     
    @RequestMapping("/delUser") 
    public void delUser(String id,HttpServletResponse response){ 
         
        String result = "{\"result\":\"error\"}"; 
         
        if(userManager.delUser(id)){ 
            result = "{\"result\":\"success\"}"; 
        } 
         
        response.setContentType("application/json"); 
         
        try { 
            PrintWriter out = response.getWriter(); 
            out.write(result); 
        } catch (IOException e) { 
            e.printStackTrace(); 
        } 
    } 
     
    @RequestMapping("/updateUser") 
    public String updateUser(User user,HttpServletRequest request){ 
         
        if(userManager.updateUser(user)){ 
            user = userManager.getUser(user.getId()); 
            request.setAttribute("user", user); 
            return "redirect:/user/getAllUser"; 
        }else{ 
            return "/error"; 
        } 
    } 


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

[java]
view plaincopy

package com.tgb.manager; 
 
import java.util.List; 
 
import com.tgb.entity.User; 
 
public interface UserManager { 
 
    public User getUser(String id); 
     
    public List<User> getAllUser(); 
     
    public void addUser(User user); 
     
    public boolean delUser(String id); 
     
    public boolean updateUser(User user); 


实现类UserManagerImpl:

[java]
view plaincopy

package com.tgb.manager; 
 
import java.util.List; 
 
import com.tgb.dao.UserDao; 
import com.tgb.entity.User; 
 
public class UserManagerImpl implements UserManager { 
 
    private UserDao userDao; 
     
    public void setUserDao(UserDao userDao) { 
        this.userDao = userDao; 
    } 
 
    @Override 
    public User getUser(String id) { 
        return userDao.getUser(id); 
    } 
 
    @Override 
    public List<User> getAllUser() { 
        return userDao.getAllUser(); 
    } 
 
    @Override 
    public void addUser(User user) { 
        userDao.addUser(user); 
    } 
 
    @Override 
    public boolean delUser(String id) { 
         
        return userDao.delUser(id); 
    } 
 
    @Override 
    public boolean updateUser(User user) { 
        return userDao.updateUser(user); 
    } 
 


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

[java]
view plaincopy

package com.tgb.dao; 
 
import java.util.List; 
 
import com.tgb.entity.User; 
 
public interface UserDao { 
 
    public User getUser(String id); 
     
    public List<User> getAllUser(); 
     
    public void addUser(User user); 
     
    public boolean delUser(String id); 
     
    public boolean updateUser(User user); 


实现类UserDaoImpl:

[java]
view plaincopy

package com.tgb.dao; 
 
import java.util.List; 
 
import org.hibernate.Query; 
import org.hibernate.SessionFactory; 
 
import com.tgb.entity.User; 
 
public class UserDaoImpl implements UserDao { 
 
    private SessionFactory sessionFactory; 
 
    public void setSessionFactory(SessionFactory sessionFactory) { 
        this.sessionFactory = sessionFactory; 
    } 
     
    @Override 
    public User getUser(String id) { 
         
        String hql = "from User u where u.id=?"; 
        Query query = sessionFactory.getCurrentSession().createQuery(hql); 
        query.setString(0, id); 
         
        return (User)query.uniqueResult(); 
    } 
 
    @Override 
    public List<User> getAllUser() { 
         
        String hql = "from User"; 
        Query query = sessionFactory.getCurrentSession().createQuery(hql); 
         
        return query.list(); 
    } 
 
    @Override 
    public void addUser(User user) { 
        sessionFactory.getCurrentSession().save(user); 
    } 
 
    @Override 
    public boolean delUser(String id) { 
         
        String hql = "delete User u where u.id = ?"; 
        Query query = sessionFactory.getCurrentSession().createQuery(hql); 
        query.setString(0, id); 
         
        return (query.executeUpdate() > 0); 
    } 
 
    @Override 
    public boolean updateUser(User user) { 
         
        String hql = "update User u set u.userName = ?,u.age=? where u.id = ?"; 

        Query query = sessionFactory.getCurrentSession().createQuery(hql); 
        query.setString(0, user.getUserName()); 
        query.setString(1, user.getAge()); 
        query.setString(2, user.getId()); 
         
        return (query.executeUpdate() > 0); 
    } 
 


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

[html]
view plaincopy

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:mvc="http://www.springframework.org/schema/mvc" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans  
    http://www.springframework.org/schema/beans/spring-beans.xsd">       
    <bean id="userDao" class="com.tgb.dao.UserDaoImpl"> 
        <property name="sessionFactory" ref="sessionFactory"></property> 
    </bean> 
 
    <bean id="userManagerBase" class="com.tgb.manager.UserManagerImpl"> 
        <property name="userDao" ref="userDao"></property> 
    </bean> 
     
    <!-- 此处为代理 --> 
    <bean name="userManager" parent="transactionProxy"> 
        <property name="target" ref="userManagerBase"></property> 
    </bean>    
</beans> 

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







这个小实例结束,下篇将对SpringMVC和Struts2做一个对比。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: