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

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

2016-05-18 14:42 671 查看
这篇接着上篇,把没贴完的代码写完,上篇主要完成了一些公共配置和界面的东西,这篇把后台的代码完成。
首先是web包下属于的control层的类UserController,这相当于Struts中的Action,是重要的类:

[java] view plain copy 





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 plain copy 在CODE上查看代码片派生到我的代码片
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 plain copy 





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 plain copy 





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 plain copy 





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 plain copy 





<?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做一个对比。
实例下载地址:http://download.csdn.net/detail/stubbornpotatoes/5489587
针对springmvc注解的解释:http://blog.csdn.net/kobejayandy/article/details/12690161
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: