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

转自:http://blog.****.net/bjyfb/article/details/8998439

这篇接着上篇,把没贴完的代码写完,上篇主要完成了一些公共配置和界面的东西,这篇把后台的代码完成。

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

  1. packagecom.tgb.web;
  2. importjava.io.IOException;
  3. importjava.io.PrintWriter;
  4. importjavax.annotation.Resource;
  5. importjavax.servlet.http.HttpServletRequest;
  6. importjavax.servlet.http.HttpServletResponse;
  7. importorg.springframework.stereotype.Controller;
  8. importorg.springframework.web.bind.annotation.RequestMapping;
  9. importcom.tgb.entity.User;
  10. importcom.tgb.manager.UserManager;
  11. @Controller
  12. @RequestMapping("/user")
  13. publicclassUserController{
  14. @Resource(name="userManager")
  15. privateUserManageruserManager;
  16. @RequestMapping("/getAllUser")
  17. publicStringgetAllUser(HttpServletRequestrequest){
  18. request.setAttribute("userList",userManager.getAllUser());
  19. return"/index";
  20. }
  21. @RequestMapping("/getUser")
  22. publicStringgetUser(Stringid,HttpServletRequestrequest){
  23. request.setAttribute("user",userManager.getUser(id));
  24. return"/editUser";
  25. }
  26. @RequestMapping("/toAddUser")
  27. publicStringtoAddUser(){
  28. return"/addUser";
  29. }
  30. @RequestMapping("/addUser")
  31. publicStringaddUser(Useruser,HttpServletRequestrequest){
  32. userManager.addUser(user);
  33. return"redirect:/user/getAllUser";
  34. }
  35. @RequestMapping("/delUser")
  36. publicvoiddelUser(Stringid,HttpServletResponseresponse){
  37. Stringresult="{\"result\":\"error\"}";
  38. if(userManager.delUser(id)){
  39. result="{\"result\":\"success\"}";
  40. }
  41. response.setContentType("application/json");
  42. try{
  43. PrintWriterout=response.getWriter();
  44. out.write(result);
  45. }catch(IOExceptione){
  46. e.printStackTrace();
  47. }
  48. }
  49. @RequestMapping("/updateUser")
  50. publicStringupdateUser(Useruser,HttpServletRequestrequest){
  51. if(userManager.updateUser(user)){
  52. user=userManager.getUser(user.getId());
  53. request.setAttribute("user",user);
  54. return"redirect:/user/getAllUser";
  55. }else{
  56. return"/error";
  57. }
  58. }
  59. }

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

  1. packagecom.tgb.manager;
  2. importjava.util.List;
  3. importcom.tgb.entity.User;
  4. publicinterfaceUserManager{
  5. publicUsergetUser(Stringid);
  6. publicList<User>getAllUser();
  7. publicvoidaddUser(Useruser);
  8. publicbooleandelUser(Stringid);
  9. publicbooleanupdateUser(Useruser);
  10. }

实现类UserManagerImpl:

  1. packagecom.tgb.manager;
  2. importjava.util.List;
  3. importcom.tgb.dao.UserDao;
  4. importcom.tgb.entity.User;
  5. publicclassUserManagerImplimplementsUserManager{
  6. privateUserDaouserDao;
  7. publicvoidsetUserDao(UserDaouserDao){
  8. this.userDao=userDao;
  9. }
  10. @Override
  11. publicUsergetUser(Stringid){
  12. returnuserDao.getUser(id);
  13. }
  14. @Override
  15. publicList<User>getAllUser(){
  16. returnuserDao.getAllUser();
  17. }
  18. @Override
  19. publicvoidaddUser(Useruser){
  20. userDao.addUser(user);
  21. }
  22. @Override
  23. publicbooleandelUser(Stringid){
  24. returnuserDao.delUser(id);
  25. }
  26. @Override
  27. publicbooleanupdateUser(Useruser){
  28. returnuserDao.updateUser(user);
  29. }
  30. }

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

  1. packagecom.tgb.dao;
  2. importjava.util.List;
  3. importcom.tgb.entity.User;
  4. publicinterfaceUserDao{
  5. publicUsergetUser(Stringid);
  6. publicList<User>getAllUser();
  7. publicvoidaddUser(Useruser);
  8. publicbooleandelUser(Stringid);
  9. publicbooleanupdateUser(Useruser);
  10. }

实现类UserDaoImpl:

  1. packagecom.tgb.dao;
  2. importjava.util.List;
  3. importorg.hibernate.Query;
  4. importorg.hibernate.SessionFactory;
  5. importcom.tgb.entity.User;
  6. publicclassUserDaoImplimplementsUserDao{
  7. privateSessionFactorysessionFactory;
  8. publicvoidsetSessionFactory(SessionFactorysessionFactory){
  9. this.sessionFactory=sessionFactory;
  10. }
  11. @Override
  12. publicUsergetUser(Stringid){
  13. Stringhql="fromUseruwhereu.id=?";
  14. Queryquery=sessionFactory.getCurrentSession().createQuery(hql);
  15. query.setString(0,id);
  16. return(User)query.uniqueResult();
  17. }
  18. @Override
  19. publicList<User>getAllUser(){
  20. Stringhql="fromUser";
  21. Queryquery=sessionFactory.getCurrentSession().createQuery(hql);
  22. returnquery.list();
  23. }
  24. @Override
  25. publicvoidaddUser(Useruser){
  26. sessionFactory.getCurrentSession().save(user);
  27. }
  28. @Override
  29. publicbooleandelUser(Stringid){
  30. Stringhql="deleteUseruwhereu.id=?";
  31. Queryquery=sessionFactory.getCurrentSession().createQuery(hql);
  32. query.setString(0,id);
  33. return(query.executeUpdate()>0);
  34. }
  35. @Override
  36. publicbooleanupdateUser(Useruser){
  37. Stringhql="updateUserusetu.userName=?,u.age=?whereu.id=?";
  38. Queryquery=sessionFactory.getCurrentSession().createQuery(hql);
  39. query.setString(0,user.getUserName());
  40. query.setString(1,user.getAge());
  41. query.setString(2,user.getId());
  42. return(query.executeUpdate()>0);
  43. }
  44. }

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

  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <beansxmlns="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. <beanid="userDao"class="com.tgb.dao.UserDaoImpl">
  9. <propertyname="sessionFactory"ref="sessionFactory"></property>
  10. </bean>
  11. <beanid="userManagerBase"class="com.tgb.manager.UserManagerImpl">
  12. <propertyname="userDao"ref="userDao"></property>
  13. </bean>
  14. <!--此处为代理-->
  15. <beanname="userManager"parent="transactionProxy">
  16. <propertyname="target"ref="userManagerBase"></property>
  17. </bean>
  18. </beans>

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

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

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

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

实例下载地址:http://download.****.net/detail/stubbornpotatoes/5489587