- 浏览: 33852 次
- 性别:
- 来自: 上海
文章分类
最新评论
文章来源:http://liuzidong.iteye.com/blog/1067492
一 环境:XP3+Oracle10g+MyEclipse6+(Tomcat)+JDK1.5
二 工程相关图片:
三 基本上参照之前示例修改得来,重点关注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);
}
}
UserRowMapper.java
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;
}
}
UserDAOImpl.java
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());
}
}
UserDAOImpl2.java
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));
}
}
springmvc.xml
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>
userList.jsp
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>
发表评论
-
js页面缓存的一个解决办法
2013-12-06 18:02 0CSSOSAnt浏览器JavaScript 由于 ... -
解决js缓存地址问题
2013-12-06 17:56 649解决js缓存地址问题 js实现不缓存 <ME ... -
URL URI URN
2013-12-06 17:51 598总结如下: 1.简写: URI (uniform resour ... -
URI和URL的区别
2013-12-06 17:47 651这两天在写代码的时候,由于涉及到资源的位置,因此,需要在Jav ... -
display标签交替显示不同行颜色
2013-12-06 17:41 601问题 想要一个更加简单的支持列表数据分页和排序的方法。 解决方 ... -
display标签简介
2013-12-06 17:36 422下面是网友总结的displa ... -
jsp转换成html
2013-11-28 16:42 636相信很多人都希望自己的页面越快越好,最好是能静态的,提高 ... -
Java验证码
2013-11-28 15:11 413Java生成验证码图片 1.Servlet生成验证码图片 ... -
JAVA图片验证码
2013-11-28 15:08 510import java.awt.Color; ... -
缓存 SpringModules Cache ( spring 和 ehcache的整合 )
2013-11-25 12:44 978spring提供缓存bean方案 s ... -
基于注解的SpringMVC简单介绍
2013-11-15 13:26 569mvcspringSpringMVC注解简单用法 Sprin ... -
JSP、Servlet中的相对路径和绝对路径
2013-11-15 13:09 565http://www.webjx.com 更新日期:200 ... -
jsp相对路径绝对路径
2013-11-15 12:57 395jsp相对路径绝对路径 ... -
JSP自定义标签rtexprvalue属性
2013-11-15 11:28 399JSP自定义标签rtexprvalue属性 分类: J2EE ... -
EL表达式 参考手册
2013-11-14 17:29 318一、EL简介 1.语法结构 ${expression ... -
Spring MVC 教程,快速入门,深入分析
2013-11-14 16:26 1016Spring MVC 教程快速入门 资源下载: Spring_ ... -
spring mvc 给action添加事务不成功的原因
2013-11-14 16:16 1137spring springMVC ation事务管 ... -
spring mvc 分页
2013-11-13 15:20 508springmvcstringhibernatesession ... -
get/post时中文乱码问题的解决办法
2013-11-13 14:00 403jspurlservlettomcat浏览器服 ... -
SpringMVC深入总结--Spring中的拦截器
2013-11-05 12:50 1157Spring为我们提供了: org ...
相关推荐
在这里,我们将深入探讨如何结合SpringMVC和JDBC实现一个分页示例。 首先,让我们了解SpringMVC中的核心概念。SpringMVC通过DispatcherServlet接收HTTP请求,然后根据配置的映射规则转发到相应的控制器(Controller...
本项目"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开发中的技能。