- 浏览: 125911 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
NeverGiveUpToChange:
%D6%D0%B9%FA%B8%DF%B9%E6%B8%F1% ...
JAVA判断字符串是否为乱码 -
IT_LDB:
完美地解决了我一个问题. 3q.
C3P0 JDBC连接池 -
wuwhai0303:
50万数据怎么办呢?
java 批量插入数据(Oracle) -
wuwhai0303:
内存够大么?
java 批量插入数据(Oracle)
SpringMVC+JDBC:分页示例
一 环境:XP3+Oracle10g+MyEclipse6+(Tomcat)+JDK1.5
二 工程相关图片:
三 基本上参照之前示例修改得来,重点关注SimpleJdbcTemplate与JdbcTemplate用法
以下只列出比较重要的类
UserController.java
UserRowMapper.java
UserDAOImpl.java
UserDAOImpl2.java
springmvc.xml
userList.jsp
二 工程相关图片:
三 基本上参照之前示例修改得来,重点关注SimpleJdbcTemplate与JdbcTemplate用法
以下只列出比较重要的类
UserController.java
Java代码
- package com.liuzd.sj.web;
- import java.util.List;
- import javax.annotation.Resource;
- import javax.servlet.http.HttpServletRequest;
- import org.springframework.stereotype.Controller;
- import org.springframework.web.bind.annotation.PathVariable;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.SessionAttributes;
- import org.springframework.web.servlet.ModelAndView;
- import com.liuzd.page.Page;
- import com.liuzd.sj.entity.User;
- import com.liuzd.sj.service.UserService;
- @Controller
- @RequestMapping("/user")
- @SessionAttributes("userList")
- public class UserController extends BaseController{
- private UserService userService;
- public UserService getUserService() {
- return userService;
- }
- @Resource
- public void setUserService(UserService userService) {
- this.userService = userService;
- }
- @RequestMapping("/userList")
- public ModelAndView userList(HttpServletRequest request){
- StringBuilder querySql = new StringBuilder();
- querySql.append("select * from users where 1=1 ");
- String oracleQuerySql = querySql.toString();
- //获取总条数
- Long totalCount = new Long(this.getUserService().pageCounts(oracleQuerySql));
- //设置分页对象
- Page page = executePage(request,oracleQuerySql,totalCount," id desc ");
- ModelAndView mv = new ModelAndView();
- //查询集合
- List<User> users = this.getUserService().pageList(page.getQuerySql());
- mv.addObject("userList",users);
- mv.setViewName("userList");
- return mv;
- }
- @RequestMapping("/addUser")
- public ModelAndView addUser(HttpServletRequest request,User user){
- System.out.println("ADD USER: "+ user);
- this.userService.addUser(user);
- return userList(request);
- }
- @RequestMapping("/toAddUser")
- public String toAddUser(){
- return "addUser";
- }
- @RequestMapping("/delUser/{id}")
- public ModelAndView delUser(@PathVariable("id") String id,HttpServletRequest request){
- this.userService.delUser(new User().setId(id));
- return userList(request);
- }
- @RequestMapping("/getUser/{id}")
- public ModelAndView getUser(@PathVariable("id") String id){
- User user = this.userService.getUserById(new User().setId(id));
- ModelAndView mv = new ModelAndView("updateUser");
- mv.addObject("user",user);
- return mv;
- }
- @RequestMapping("/updateUser")
- public ModelAndView editUser(User user,HttpServletRequest request){
- System.out.println("编辑: "+user);
- this.userService.editUser(user);
- return userList(request);
- }
- }
BaseController.java
Java代码
- package com.liuzd.sj.web;
- import javax.servlet.http.HttpServletRequest;
- import com.liuzd.page.Page;
- import com.liuzd.page.PageState;
- import com.liuzd.page.PageUtil;
- /**
- *Title:
- *Description:
- *Copyright: Copyright (c) 2011
- *Company:http://liuzidong.iteye.com/
- *Makedate:2011-5-23 下午03:31:03
- * @author liuzidong
- * @version 1.0
- * @since 1.0
- *
- */
- public class BaseController {
- /**
- * oracel的三层分页语句
- * 子类在展现数据前,进行分页计算!
- * @param querySql 查询的SQL语句,未进行分页
- * @param totalCount 根据查询SQL获取的总条数
- * @param columnNameDescOrAsc 列名+排序方式 : ID DESC or ASC
- */
- protected Page executePage(HttpServletRequest request,String querySql,Long totalCount,String columnNameDescOrAsc){
- String oracleSql = PageUtil.createQuerySql(querySql,columnNameDescOrAsc);
- if(null == totalCount){
- totalCount = 0L;
- }
- /**页面状态,这个状态是分页自带的,与业务无关*/
- String pageAction = request.getParameter("pageAction");
- String value = request.getParameter("pageKey");
- /**获取下标判断分页状态*/
- int index = PageState.getOrdinal(pageAction);
- Page page = null;
- /**
- * index < 1 只有二种状态
- * 1 当首次调用时,分页状态类中没有值为 NULL 返回 -1
- * 2 当页面设置每页显示多少条: index=0,当每页显示多少条时,分页类要重新计算
- * */
- Page sessionPage = getPage(request);
- if(index < 1){
- page = PageUtil.inintPage(oracleSql,totalCount,index,value,sessionPage);
- }else{
- page = PageUtil.execPage(index,value,sessionPage);
- }
- setSession(request,page);
- return page;
- }
- private Page getPage(HttpServletRequest request) {
- Page page = (Page)request.getSession().getAttribute(PageUtil.SESSION_PAGE_KEY);
- if(page == null){
- page = new Page();
- }
- return page;
- }
- private void setSession(HttpServletRequest request,Page page) {
- request.getSession().setAttribute(PageUtil.SESSION_PAGE_KEY,page);
- }
- }
Java代码
- package com.liuzd.sj.dao;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import org.springframework.jdbc.core.RowMapper;
- import com.liuzd.sj.entity.User;
- public class UserRowMapper implements RowMapper<User> {
- public UserRowMapper(){}
- public User mapRow(ResultSet rs, int index) throws SQLException {
- User user = new User(
- rs.getString("id"),
- rs.getString("name"),
- rs.getString("password"),
- rs.getString("address"),
- rs.getString("sex"),
- rs.getInt("age")
- );
- return user;
- }
- }
Java代码
- package com.liuzd.sj.dao.impl;
- import java.sql.PreparedStatement;
- import java.sql.SQLException;
- import java.util.List;
- import javax.annotation.Resource;
- import org.springframework.jdbc.core.BeanPropertyRowMapper;
- import org.springframework.jdbc.core.PreparedStatementSetter;
- import org.springframework.stereotype.Repository;
- import com.liuzd.sj.dao.UserDAO;
- import com.liuzd.sj.dao.UserRowMapper;
- import com.liuzd.sj.entity.User;
- @Repository("userDao")
- public class UserDAOImpl implements UserDAO
- {
- private static final String INSERT = "insert into users(id,name,age,sex,address,password)VALUES(?,?,?,?,?,?)";
- private static final String UPDATE = "update users set name=?,age=?,sex=?,address=?,password=? where id=?";
- private static final String GET = "select * from users where id=?";
- private static final String CHECK = "select count(1) from users where name=? and password=?";
- private static final String SELECT = "select * from users";
- private static final String DEL = "delete users where id=?";
- private org.springframework.jdbc.core.JdbcTemplate jdbcTemplate;
- public org.springframework.jdbc.core.JdbcTemplate getJdbcTemplate() {
- return jdbcTemplate;
- }
- @Resource
- public void setJdbcTemplate(
- org.springframework.jdbc.core.JdbcTemplate jdbcTemplate) {
- this.jdbcTemplate = jdbcTemplate;
- }
- public void addUser(final User user) {
- getJdbcTemplate().update(INSERT, new PreparedStatementSetter(){
- public void setValues(PreparedStatement ps)
- throws SQLException {
- int i = 0;
- ps.setString(++i, user.getId());
- ps.setString(++i, user.getName());
- ps.setInt(++i, user.getAge());
- ps.setString(++i,user.getSex());
- ps.setString(++i,user.getAddress());
- ps.setString(++i,user.getPassword());
- }
- });
- }
- public int checkUserExits(User user) {
- return getJdbcTemplate().queryForInt(CHECK, user.getName(),user.getPassword());
- }
- public void delUser(User user) {
- getJdbcTemplate().update(DEL, user.getId());
- }
- public void editUser(final User user) {
- getJdbcTemplate().update(UPDATE, new PreparedStatementSetter(){
- public void setValues(PreparedStatement ps)
- throws SQLException {
- int i = 0;
- ps.setString(++i, user.getName());
- ps.setInt(++i, user.getAge());
- ps.setString(++i,user.getSex());
- ps.setString(++i,user.getAddress());
- ps.setString(++i,user.getPassword());
- ps.setString(++i, user.getId());
- }
- });
- }
- public List<User> getAllUser() {
- return getJdbcTemplate().query(SELECT, new BeanPropertyRowMapper<User>(User.class));
- }
- public User getUserById(User user) {
- return getJdbcTemplate().queryForObject(GET, new UserRowMapper(),user.getId());
- }
- public int pageCounts(String querySql) {
- return getJdbcTemplate().queryForInt("select count(1) from("+querySql+")");
- }
- public List<User> pageList(String querySql) {
- return getJdbcTemplate().query(querySql, new UserRowMapper());
- }
- }
Java代码
- package com.liuzd.sj.dao.impl;
- import java.util.List;
- import java.util.Map;
- import javax.annotation.Resource;
- import org.springframework.jdbc.core.BeanPropertyRowMapper;
- import org.springframework.stereotype.Repository;
- import com.liuzd.sj.dao.UserDAO;
- import com.liuzd.sj.entity.User;
- import com.liuzd.util.BeanToMapUtil;
- @Repository("userDao2")
- public class UserDAOImpl2 implements UserDAO
- {
- private static final String INSERT = "insert into users(id,name,age,sex,address,password)VALUES(:id,:name,:age,:sex,:address,:password)";
- private static final String UPDATE = "update users set name=:name,age=:age,sex=:sex,address=:address,password=:password where id=:id";
- private static final String GET = "select * from users where id=?";
- private static final String CHECK = "select count(1) from users where name=? and password=?";
- private static final String SELECT = "select * from users";
- private static final String DEL = "delete users where id=?";
- private org.springframework.jdbc.core.simple.SimpleJdbcTemplate simpleJdbcTemplate;
- public org.springframework.jdbc.core.simple.SimpleJdbcTemplate getSimpleJdbcTemplate() {
- return simpleJdbcTemplate;
- }
- @Resource
- public void setSimpleJdbcTemplate(
- org.springframework.jdbc.core.simple.SimpleJdbcTemplate simpleJdbcTemplate) {
- this.simpleJdbcTemplate = simpleJdbcTemplate;
- }
- public void addUser(final User user) {
- Map<String,Object> userMap = BeanToMapUtil.beanToMap(user);
- getSimpleJdbcTemplate().update(INSERT, userMap);
- }
- public int checkUserExits(User user) {
- return getSimpleJdbcTemplate().queryForInt(CHECK, user.getName(),user.getPassword());
- }
- public void delUser(User user) {
- getSimpleJdbcTemplate().update(DEL, user.getId());
- }
- public void editUser(final User user) {
- Map<String,Object> userMap = BeanToMapUtil.beanToMap(user);
- getSimpleJdbcTemplate().update(UPDATE, userMap);
- }
- public List<User> getAllUser() {
- return getSimpleJdbcTemplate().query(SELECT, new BeanPropertyRowMapper<User>(User.class));
- }
- public User getUserById(User user) {
- return getSimpleJdbcTemplate().queryForObject(GET, new BeanPropertyRowMapper<User>(User.class),user.getId());
- }
- public int pageCounts(String querySql) {
- return getSimpleJdbcTemplate().queryForInt("select count(1) from("+querySql+")");
- }
- public List<User> pageList(String querySql) {
- return getSimpleJdbcTemplate().query(querySql, new BeanPropertyRowMapper<User>(User.class));
- }
- }
Java代码
- <?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:p="http://www.springframework.org/schema/p"
- 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-3.0.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context-3.0.xsd
- http://www.springframework.org/schema/mvc
- http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
- <!--
- 自动搜索@Controller标注的类
- 用于指明系统从哪个路径下寻找controller,然后提前初始化这些对象。
- -->
- <context:component-scan base-package="com.liuzd.sj.web" />
- <!-- ③:对模型视图名称的解析,即在模型视图名称添加前后缀 -->
- <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/WEB-INF/jsp/" p:suffix=".jsp"/>
- </beans>
Java代码
- <%@ page language="java" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%>
- <%@ taglib uri="/WEB-INF/c.tld" prefix="c"%>
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html>
- <head>
- <%@ include file="/common/meta.jsp"%>
- </head>
- <body>
- <table width="60%" border="1" cellpadding="0" align="center">
- <thead>
- <tr>
- <th style="cursor: hand;" title="按姓名进行排序" onclick="sortPage('name')" valign="top">
- 姓名<font color='red'>${page.sortName eq "name" ? page.sortInfo : page.defaultInfo}</font>
- </th>
- <th style="cursor: hand;" title="按年龄进行排序" onclick="sortPage('age')" valign="top">
- 年龄<font color='red'>${page.sortName eq "age" ? page.sortInfo : page.defaultInfo}</font>
- </th>
- <th style="cursor: hand;" title="按性别进行排序" onclick="sortPage('sex')" valign="top">
- 性别<font color='red'>${page.sortName eq "sex" ? page.sortInfo : page.defaultInfo}</font>
- </th>
- <th style="cursor: hand;" title="按地址进行排序" onclick="sortPage('address')" valign="top">
- 地址<font color='red'>${page.sortName eq "address" ? page.sortInfo : page.defaultInfo}</font>
- </th>
- <th style="cursor: hand;" >
- 操作
- </th>
- </tr>
- </thead>
- <tbody>
- <c:forEach items="${userList}" var="user">
- <tr align="center">
- <td>
- ${user.name}
- </td>
- <td>
- ${user.age}
- </td>
- <td>
- ${user.sex eq 1 ? "男" : user.sex eq 2 ? "女" : "未知"}
- </td>
- <td>
- ${user.address}
- </td>
- <td>
- <a
- href="${pageContext.request.contextPath}/user/toAddUser.do">添加</a>
- |
- <a
- href="${pageContext.request.contextPath}/user/getUser/${user.id}.do">编辑</a>
- |
- <a
- href="${pageContext.request.contextPath}/user/delUser/${user.id}.do">删除</a>
- </td>
- </tr>
- </c:forEach>
- <jsp:include page="/page/page.jsp">
- <jsp:param name="url" value="user/userList.do" />
- </jsp:include>
- </tbody>
- </table>
- <br>
- <a href="${pageContext.request.contextPath}/index.jsp">返回</a><br>
- </body>
-
</html>
相关推荐
本项目"spring+springmvc+mybatis+jsp分页插件"正是为了解决这个问题而设计的。下面我们将详细探讨这个项目的各个组成部分及其工作原理。 首先,Spring是一个开源的Java框架,它提供了全面的编程和配置模型,简化了...
标题 "SpringMVC3.0+MyIbatis3.0(分页示例)" 提到的是一个集成SpringMVC和MyBatis的项目,并且包含了分页功能的实现。这通常意味着我们要探讨的是如何在Java Web开发环境中整合这两个流行的框架,并实现数据的分页...
总的来说,这个SpringMVC3 + SpringJDBC的案例项目提供了一个全面的实战示例,涵盖了Web开发中的关键部分。通过学习和实践这个案例,开发者可以深入理解SpringMVC和SpringJDBC的整合应用,以及如何在实际项目中实现...
分页插件PageHelper则是Mybatis的扩展,它提供了强大的分页功能,只需简单配置,即可实现物理分页或逻辑分页。PageHelper的使用使得在查询大量数据时,既能满足用户体验,又避免了一次性加载大量数据对服务器造成...
这是一个基于SpringMVC、MyBatis和Maven的Web应用程序示例,专为初学者设计,旨在帮助他们理解和掌握这三大框架的集成与应用。这个项目涵盖了登录功能、基本的CRUD操作(创建、读取、更新、删除)以及分页处理。下面...
这是一套完整的后端与前端结合的项目,旨在提供一个安全、高效的二手车交易平台开发示例。 首先,SpringBoot是Spring框架的一种轻量级实现,它简化了Spring应用程序的初始搭建以及开发过程。SpringBoot的特点在于...
本项目“javaee-SpringMVC-Mybatis 分页插件”显然是一个结合了这三个框架实现的分页功能示例。下面我们将深入探讨这些技术及其分页插件的应用。 1. **JavaEE**:JavaEE(Java Platform, Enterprise Edition)是...
MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 三、...
MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集的过程,可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。...
本文的知识点涵盖了如何使用Spring Data JPA、SpringMVC和Jquery.pagination.js这三个技术栈组合实现数据的分页功能。接下来,将详细介绍这些技术的使用方法和优势,并结合示例代码来具体说明如何将这些技术集成在...
在SpringMVC中,控制器接收分页参数,如当前页和每页记录数,然后传递给服务层,最后由MyBatis执行相应的分页SQL并返回结果。 **事务管理** 事务管理是企业级应用中的重要组成部分,确保数据的一致性和完整性。...
最后,`sql.rar`可能包含了创建表和插入示例数据的SQL脚本,而`mytest6`可能是项目中的一个测试类或者模块,用于验证分页功能的正确性。 总结起来,本项目是一个基本的SSM框架实践,通过结合Spring、SpringMVC和...
这个"ssm分页增删改查"的项目,旨在为新手和初学者提供一个基础的示例,帮助他们理解和掌握在实际应用中如何实现数据的分页查询、增加、删除和修改操作。 1. **Spring框架**:Spring作为核心容器,管理着应用中的...
socket工具类,权限组件,菜单组件,jdbc分页支持多种数据库,ant路径工具类,增加jquery easyUI 1.0.9 版本管理,服务根路径工具类,文件上传工具类 1.0.10 集成ueditor在线编辑器 1.0.11 地址联动 1.0.12 Excel工具类 ...
3. **MyBatis**:MyBatis是一个持久层框架,它允许开发者编写SQL语句并将其映射到Java接口上,消除了几乎所有的JDBC代码和手动设置参数。在SSM中,MyBatis作为数据访问层,负责与数据库交互。 4. **EasyUI**:...
**引入依赖**:确保引入了MyBatis、SpringMVC、MyBatis-Spring、BoneCP连接池、MySQL驱动以及Spring JDBC的依赖。 B. **编写DAO层**:创建一个用于查询学生的Mapper接口,例如`StudentMapper`,并定义对应的XML...
这个项目的代码示例可以帮助初学者理解SSM框架的实际应用,特别是如何结合PageHelper实现分页查询,以及如何使用Ajax进行前后端交互。通过学习和实践这个项目,开发者可以进一步提升在Java web开发中的技能。