SpringMVC+Hibernate+Spring整合实例(二)
转自:http://blog.****.net/bjyfb/article/details/8998439
这篇接着上篇,把没贴完的代码写完,上篇主要完成了一些公共配置和界面的东西,这篇把后台的代码完成。
首先是web包下属于的control层的类UserController,这相当于Struts中的Action,是重要的类:
[java]
view plaincopy
- packagecom.tgb.web;
- importjava.io.IOException;
- importjava.io.PrintWriter;
- importjavax.annotation.Resource;
- importjavax.servlet.http.HttpServletRequest;
- importjavax.servlet.http.HttpServletResponse;
- importorg.springframework.stereotype.Controller;
- importorg.springframework.web.bind.annotation.RequestMapping;
- importcom.tgb.entity.User;
- importcom.tgb.manager.UserManager;
- @Controller
- @RequestMapping("/user")
- publicclassUserController{
- @Resource(name="userManager")
- privateUserManageruserManager;
- @RequestMapping("/getAllUser")
- publicStringgetAllUser(HttpServletRequestrequest){
- request.setAttribute("userList",userManager.getAllUser());
- return"/index";
- }
- @RequestMapping("/getUser")
- publicStringgetUser(Stringid,HttpServletRequestrequest){
- request.setAttribute("user",userManager.getUser(id));
- return"/editUser";
- }
- @RequestMapping("/toAddUser")
- publicStringtoAddUser(){
- return"/addUser";
- }
- @RequestMapping("/addUser")
- publicStringaddUser(Useruser,HttpServletRequestrequest){
- userManager.addUser(user);
- return"redirect:/user/getAllUser";
- }
- @RequestMapping("/delUser")
- publicvoiddelUser(Stringid,HttpServletResponseresponse){
- Stringresult="{\"result\":\"error\"}";
- if(userManager.delUser(id)){
- result="{\"result\":\"success\"}";
- }
- response.setContentType("application/json");
- try{
- PrintWriterout=response.getWriter();
- out.write(result);
- }catch(IOExceptione){
- e.printStackTrace();
- }
- }
- @RequestMapping("/updateUser")
- publicStringupdateUser(Useruser,HttpServletRequestrequest){
- 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
- packagecom.tgb.manager;
- importjava.util.List;
- importcom.tgb.entity.User;
- publicinterfaceUserManager{
- publicUsergetUser(Stringid);
- publicList<User>getAllUser();
- publicvoidaddUser(Useruser);
- publicbooleandelUser(Stringid);
- publicbooleanupdateUser(Useruser);
- }
实现类UserManagerImpl:
[java]
view plaincopy
- packagecom.tgb.manager;
- importjava.util.List;
- importcom.tgb.dao.UserDao;
- importcom.tgb.entity.User;
- publicclassUserManagerImplimplementsUserManager{
- privateUserDaouserDao;
- publicvoidsetUserDao(UserDaouserDao){
- this.userDao=userDao;
- }
- @Override
- publicUsergetUser(Stringid){
- returnuserDao.getUser(id);
- }
- @Override
- publicList<User>getAllUser(){
- returnuserDao.getAllUser();
- }
- @Override
- publicvoidaddUser(Useruser){
- userDao.addUser(user);
- }
- @Override
- publicbooleandelUser(Stringid){
- returnuserDao.delUser(id);
- }
- @Override
- publicbooleanupdateUser(Useruser){
- returnuserDao.updateUser(user);
- }
- }
最后是属于dao包底下的DAO层,主要由Hibernate完成。接口UserDao:
[java]
view plaincopy
- packagecom.tgb.dao;
- importjava.util.List;
- importcom.tgb.entity.User;
- publicinterfaceUserDao{
- publicUsergetUser(Stringid);
- publicList<User>getAllUser();
- publicvoidaddUser(Useruser);
- publicbooleandelUser(Stringid);
- publicbooleanupdateUser(Useruser);
- }
实现类UserDaoImpl:
[java]
view plaincopy
- packagecom.tgb.dao;
- importjava.util.List;
- importorg.hibernate.Query;
- importorg.hibernate.SessionFactory;
- importcom.tgb.entity.User;
- publicclassUserDaoImplimplementsUserDao{
- privateSessionFactorysessionFactory;
- publicvoidsetSessionFactory(SessionFactorysessionFactory){
- this.sessionFactory=sessionFactory;
- }
- @Override
- publicUsergetUser(Stringid){
- Stringhql="fromUseruwhereu.id=?";
- Queryquery=sessionFactory.getCurrentSession().createQuery(hql);
- query.setString(0,id);
- return(User)query.uniqueResult();
- }
- @Override
- publicList<User>getAllUser(){
- Stringhql="fromUser";
- Queryquery=sessionFactory.getCurrentSession().createQuery(hql);
- returnquery.list();
- }
- @Override
- publicvoidaddUser(Useruser){
- sessionFactory.getCurrentSession().save(user);
- }
- @Override
- publicbooleandelUser(Stringid){
- Stringhql="deleteUseruwhereu.id=?";
- Queryquery=sessionFactory.getCurrentSession().createQuery(hql);
- query.setString(0,id);
- return(query.executeUpdate()>0);
- }
- @Override
- publicbooleanupdateUser(Useruser){
- Stringhql="updateUserusetu.userName=?,u.age=?whereu.id=?";
- Queryquery=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
- <?xmlversion="1.0"encoding="UTF-8"?>
- <beansxmlns="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">
- <beanid="userDao"class="com.tgb.dao.UserDaoImpl">
- <propertyname="sessionFactory"ref="sessionFactory"></property>
- </bean>
- <beanid="userManagerBase"class="com.tgb.manager.UserManagerImpl">
- <propertyname="userDao"ref="userDao"></property>
- </bean>
- <!--此处为代理-->
- <beanname="userManager"parent="transactionProxy">
- <propertyname="target"ref="userManagerBase"></property>
- </bean>
- </beans>
到此为止,所有的配置和代码完成,部署—运行,运行结果如下图:
这个小实例结束,下篇将对SpringMVC和Struts2做一个对比。
实例下载地址:http://download.****.net/detail/stubbornpotatoes/5489587