博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringMVC+Spring+hibernate整合及分页
阅读量:7059 次
发布时间:2019-06-28

本文共 16538 字,大约阅读时间需要 55 分钟。

1. 新建web project

2. 引入jar, 

3. 创建包com.tgb.web.controller, 下面创建包(dao,entity,service, config,spring,hibernate)

    config-> spring-core.xml,spring-servlet.xml,spring-hibernate.xml    

   1) config下 springmvc配置文件 spring-servlet.xml 

 2) spring-hibernate.xml   

org.hibernate.dialect.MySQLDialect
update
true
true
classpath*:com/tgb/web/controller/hibernate/hibernate.cfg.xml
PROPAGATION_REQUIRED,-Exception
PROPAGATION_REQUIRED,-Exception
PROPAGATION_REQUIRED,-Exception
PROPAGATION_REQUIRED,-Exception
PROPAGATION_REQUIRED,-Exception
PROPAGATION_NEVER

 3)  spring配置文件:spring-core.xml    

 

spring-> spring-import.xml 

   hibernate->hibernate.cfg.xml  

  
  

web.xml

index.jsp
contextConfigLocation
classpath*:config/spring-*.xml
org.springframework.web.context.ContextLoaderListener
springMVC
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath*:config/spring-servlet.xml
1
characterEncodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
UTF-8
forceEncoding
true
characterEncodingFilter
/*
springMVC
/
openSession
org.springframework.orm.hibernate4.support.OpenSessionInViewFilter
openSession
/*

  

 

4. 建实体类 

 entity->User.java    

package com.tgb.web.controller.entity;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.Table;@Entity@Table(name="T_USER")public class User {	@Id	@GeneratedValue	@Column(length=32)	private Long id;	public Long getId() {		return id;	}	public void setId(Long id) {		this.id = id;	}	@Column(length=32)	private String userName;	@Column(length=32)	private String age;	public String getUserName() {		return userName;	}	public void setUserName(String userName) {		this.userName = userName;	}	public String getAge() {		return age;	}	public void setAge(String age) {		this.age = age;	}}

5. 建DAO层  

dao->IUserDao.java, UserDao.java

    1) IUserDao.java接口文件        

package com.tgb.web.controller.dao;import java.util.List;import com.tgb.web.controller.entity.User;public interface IUserDAO {	public void addUser(User user);	public List
getAllUser(); public boolean delUser(Long id); public User getUser(Long id); public boolean updateUser(User user); public List
getForPage(int offset, int length); public Long getAllRowCount();}

  2) UserDao.java 实体类

   

package com.tgb.web.controller.dao;import java.util.List;import org.hibernate.Query;import org.hibernate.SessionFactory;import com.tgb.web.controller.entity.User;public class UserDAO implements IUserDAO {	private SessionFactory sessionFactory;	public SessionFactory getSessionFactory() {		return sessionFactory;	}	public void setSessionFactory(SessionFactory sessionFactory) {		this.sessionFactory = sessionFactory;	}	@Override	public void addUser(User user) {		sessionFactory.getCurrentSession().save(user);	}	@Override	public List
getAllUser() { String hql = "FROM User"; Query query = sessionFactory.getCurrentSession().createQuery(hql); return query.list(); } @Override public boolean delUser(Long id) { String hql = "DELETE User u WHERE u.id=?"; Query query = sessionFactory.getCurrentSession().createQuery(hql); query.setString(0, String.valueOf(id)); return (query.executeUpdate()>0); } @Override public User getUser(Long id) { String hql = "FROM User u WHERE u.id=?"; Query query = sessionFactory.getCurrentSession().createQuery(hql); query.setString(0, String.valueOf(id)); return (User)query.uniqueResult(); } @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, String.valueOf(user.getUserName())); query.setString(1, String.valueOf(user.getAge())); query.setString(2, String.valueOf(user.getId())); return (query.executeUpdate()>0); } @Override public List
getForPage(int offset, int length) { List
userList=null; String hql = "FROM User"; Query query = sessionFactory.getCurrentSession().createQuery(hql); query.setFirstResult(offset); query.setMaxResults(length); userList=query.list(); return userList; } @Override public Long getAllRowCount() { String hql = "SELECT COUNT(*) FROM User"; Query query = sessionFactory.getCurrentSession().createQuery(hql); return Long.parseLong(query.uniqueResult().toString()); }}

6. 建service层   

service->IUserManager.java, UserManager.java

   1) IUserManager.java接口   

package com.tgb.web.controller.service;import java.util.List;import com.tgb.web.controller.entity.Page;import com.tgb.web.controller.entity.User;public interface IUserManager {	public void addUser(User user);	public List
getAllUser(); public boolean delUser(Long id); public User getUser(Long id); public boolean updateUser(User user); public Page getForPage(int offset, int length); public Long getAllRowCount();}

 2) UserManager.java实现类   

package com.tgb.web.controller.service;import java.util.List;import com.tgb.web.controller.dao.IUserDAO;import com.tgb.web.controller.entity.Page;import com.tgb.web.controller.entity.User;public class UserManager implements IUserManager{	private IUserDAO userDao;		public IUserDAO getUserDao() {		return userDao;	}	public void setUserDao(IUserDAO userDao) {		this.userDao = userDao;	}	@Override	public void addUser(User user) {		userDao.addUser(user);			}	@Override	public List
getAllUser() { return userDao.getAllUser(); } @Override public boolean delUser(Long id) { return userDao.delUser(id); } @Override public User getUser(Long id) { return userDao.getUser(id); } @Override public boolean updateUser(User user) { return userDao.updateUser(user); } @Override public Page getForPage(int currentPage, int pageSize) { Page page = new Page(); int allRow = userDao.getAllRowCount().intValue(); int offset = page.countOffset(currentPage, pageSize); List
list= userDao.getForPage(offset, pageSize); page.setPageNo(currentPage); page.setPageSize(pageSize); page.setTotalRecords(allRow); page.setList(list); return page; } @Override public Long getAllRowCount() { return userDao.getAllRowCount(); }}

7. 建controller

 controller包下新建controller文件

 UserController.java

 

package com.tgb.web.controller;import java.io.IOException;import java.io.PrintWriter;import java.util.List;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.web.controller.entity.Page;import com.tgb.web.controller.entity.User;import com.tgb.web.controller.service.IUserManager;@Controller@RequestMapping("/user")public class UserController {	@Resource(name="userManager")	private IUserManager userManager;		@RequestMapping("/addUser")	public String addUser(User user){		userManager.addUser(user);		return "redirect:/user/getAllUsers";	}	@RequestMapping("/toAddUser")	public String toAddUser(){		return "/addUser";	}		@RequestMapping("/delUser")	public void delUser(Long id,HttpServletResponse response){		String result = "{\"result\":\"error\"}";		if(userManager.delUser(id)){			result = "{\"result\":\"success\"}";		}		PrintWriter out = null;	    response.setContentType("application/json");	    try {	    	out=response.getWriter();	        out.write(result);	    } catch (IOException e) {	        e.printStackTrace();	    }	}		@RequestMapping("/getAllUser")	public String getAllUser(HttpServletRequest request){		List
users = userManager.getAllUser(); request.setAttribute("users", users); return "/userManager"; } @RequestMapping("/getAllUsers") public String getAllUsers(HttpServletRequest request){ try { String pageNo = request.getParameter("pageNo"); if (pageNo == null) { pageNo = "1"; } Page page = userManager.getForPage(Integer.valueOf(pageNo), 10); request.setAttribute("page", page); List
pageusers = page.getList(); request.setAttribute("pageusers", pageusers); } catch (Exception e) { e.printStackTrace(); } return "/userManagerPage"; } @RequestMapping("/getUser") public String getUser(Long id,HttpServletRequest request){ User user = userManager.getUser(id); request.setAttribute("user", user); return "/editUser"; } @RequestMapping("/updateUser") public String updateUser(User user,HttpServletRequest request, HttpServletResponse response){ if(userManager.updateUser(user)){ return "redirect:/user/getAllUsers"; } else{ return "error"; } } }

 8. 建显示层jsp文件  

userManager.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>        My JSP 'addUser.jsp' starting page              添加用户	
姓名 年龄 编辑
${u.userName} ${u.age} 编辑 删除

addUser.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>        My JSP 'addUser.jsp' starting page          	  
添加用户
姓名:
年龄:

editUser.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>        My JSP 'addUser.jsp' starting page          	  
修改用户
<%-- --%>
姓名:
年龄:

  

IE端访问:

http://localhost:8080/springMVCSSH2/user/getAllUser

  

 

分页的话, 在entity里新建Page.java

package com.tgb.web.controller.entity;import java.util.List;public class Page
{ // 结果集 private List
list; // 查询记录总数 private int totalRecords; // 每页多少条记录 private int pageSize; // 第几页 private int pageNo; /** * @return 总页数 * */ public int getTotalPages(){ return (totalRecords+pageSize-1)/pageSize; } /** * 计算当前页开始记录 * @param pageSize 每页记录数 * @param currentPage 当前第几页 * @return 当前页开始记录号 */ public int countOffset(int currentPage,int pageSize){ int offset = pageSize*(currentPage-1); return offset; } /** * @return 首页 * */ public int getTopPageNo(){ return 1; } /** * @return 上一页 * */ public int getPreviousPageNo(){ if(pageNo<=1){ return 1; } return pageNo-1; } /** * @return 下一页 * */ public int getNextPageNo(){ if(pageNo>=getBottomPageNo()){ return getBottomPageNo(); } return pageNo+1; } /** * @return 尾页 * */ public int getBottomPageNo(){ return getTotalPages(); } public List
getList() { return list; } public void setList(List
list) { this.list = list; } public int getTotalRecords() { return totalRecords; } public void setTotalRecords(int totalRecords) { this.totalRecords = totalRecords; } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public int getPageNo() { return pageNo; } public void setPageNo(int pageNo) { this.pageNo = pageNo; }}

在UserDao.java里加入新方法

@Override	public List
getForPage(int offset, int length) { List
userList=null; String hql = "FROM User"; Query query = sessionFactory.getCurrentSession().createQuery(hql); query.setFirstResult(offset); query.setMaxResults(length); userList=query.list(); return userList; } @Override public Long getAllRowCount() { String hql = "SELECT COUNT(*) FROM User"; Query query = sessionFactory.getCurrentSession().createQuery(hql); return Long.parseLong(query.uniqueResult().toString()); }

UserManage.java里调用dao方法

@Override	public Page getForPage(int currentPage, int pageSize) {		Page page = new Page();		int allRow = userDao.getAllRowCount().intValue();		int offset = page.countOffset(currentPage, pageSize);		List
list= userDao.getForPage(offset, pageSize); page.setPageNo(currentPage); page.setPageSize(pageSize); page.setTotalRecords(allRow); page.setList(list); return page; } @Override public Long getAllRowCount() { return userDao.getAllRowCount(); }

UserController里调用

@RequestMapping("/getAllUsers")	public String getAllUsers(HttpServletRequest request){		 try {	            String pageNo = request.getParameter("pageNo");	            if (pageNo == null) {	                pageNo = "1";	            }	            Page page = userManager.getForPage(Integer.valueOf(pageNo), 10);	            request.setAttribute("page", page);	            List
pageusers = page.getList(); request.setAttribute("pageusers", pageusers); } catch (Exception e) { e.printStackTrace(); } return "/userManagerPage"; }

  新建显示层jsp文件 UserManagerPage.jsp

 

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>        My JSP 'addUser.jsp' starting page              添加用户	
姓名 年龄 编辑
${u.userName} ${u.age} 编辑 删除
共${page.totalRecords}条记录 共${page.totalPages}页 当前第${page.pageNo}页

  

 

 

 

  

  

     

转载于:https://www.cnblogs.com/wujixing/p/5614953.html

你可能感兴趣的文章
结构体类型指针做函数参数(C++)
查看>>
Akka笔记之消息传递
查看>>
带你实现开发者头条(一) 启动页实现
查看>>
Android Listview中Button按钮点击事件冲突解决办法
查看>>
【技术篇】SQL的四种连接-左外连接、右外连接、内连接、全连接
查看>>
可翻折的TextViewExpandableTextView
查看>>
【软件工程】1.软件工程概述
查看>>
IOS学习和总结KVO
查看>>
Java EE7和Maven工程入门(2)
查看>>
MVP 模式在 Android 中的使用
查看>>
《数据结构》—— 队列
查看>>
hadoop 3.0 集群部署,超详细-Ali0th
查看>>
MySQL数据库MyISAM存储引擎转为Innodb
查看>>
我的友情链接
查看>>
在OpenSUSE上配置Apache+MySQL+PHP(写给自己看的笔记)
查看>>
初识Nginx
查看>>
Android WebView 缓存处理
查看>>
我的友情链接
查看>>
Nmap网络扫描从入门到精通实战视频课程
查看>>
我的友情链接
查看>>