文章来源: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>

springMVC+JDBC:分页示例的更多相关文章

  1. springmvc 项目完整示例06 日志–log4j 参数详细解析 log4j如何配置

    Log4j由三个重要的组件构成: 日志信息的优先级 日志信息的输出目的地 日志信息的输出格式 日志信息的优先级从高到低有ERROR.WARN. INFO.DEBUG,分别用来指定这条日志信息的重要程度 ...

  2. springmvc 项目完整示例02 项目创建-eclipse创建动态web项目 配置文件 junit单元测试

    包结构 所需要的jar包直接拷贝到lib目录下 然后选定 build path 之后开始写项目代码 配置文件 ApplicationContext.xml <?xml version=" ...

  3. jdbc分页

    分页是一个被讲到烂掉的话题,今天我再拾起来踹几脚吧 (Hibernate的分页做得很好很强大,用的人都知道 ,这个就不用再说了) 1.为什么要分页?    首先是数据量太大会影响查询和传输的性能,关键 ...

  4. JDBC + MySQL 示例

    jdbc mysql connection 教程 翻译自:JDBC MySQL Connection Tutorial Java Database Connectivity (JDBC) 是一个基于J ...

  5. SQL Server 2012 OFFSET/FETCH NEXT分页示例(转载)

    原文:http://beyondrelational.com/modules/29/presentations/483/scripts/12983/sql-server-2012-server-sid ...

  6. Mybatis+SpringMVC实现分页查询(附源码)

    Maven+Mybatis+Spring+SpringMVC实现分页查询(附源码) 一.项目搭建 关于项目搭建,小宝鸽以前写过一篇Spirng+SpringMVC+Maven+Mybatis+MySQ ...

  7. springmvc 项目完整示例01 需求与数据库表设计 简单的springmvc应用实例 web项目

    一个简单的用户登录系统 用户有账号密码,登录ip,登录时间 打开登录页面,输入用户名密码 登录日志,可以记录登陆的时间,登陆的ip 成功登陆了的话,就更新用户的最后登入时间和ip,同时记录一条登录记录 ...

  8. springmvc 项目完整示例03 小结

    利用spring 创建一个web项目 大致原理 利用spring的ioc 原理,例子中也就是体现在了配置文件中 设置了自动扫描注解 配置了数据库信息等 一般一个项目,主要有domain,dao,ser ...

  9. springmvc 项目完整示例04 整合mybatis mybatis所需要的jar包 mybatis配置文件 sql语句 mybatis应用

    百度百科: MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBat ...

  10. springmvc 项目完整示例05 日志 --log4j整合 配置 log4j属性设置 log4j 配置文件 log4j应用

    log4j 就是log for java嘛,老外都喜欢这样子,比如那个I18n  ---internationalization  不就是i和n之间有18个字母... http://logging.a ...

随机推荐

  1. js转化文章发布于几天几小时几分钟前

    alert(dateFormat('2020-07-08 11:32:44')); function dateFormat(d1) { var dateEnd = new Date();//获取当前时 ...

  2. .NET Core开发实战(第18课:日志框架:聊聊记日志的最佳姿势)--学习笔记(下)

    18 | 日志框架:聊聊记日志的最佳姿势 除了使用 CreateLogger 指定 logger 的名称,实际上还可以借助容器来构造 logger,通常情况下我们会定义自己的类 namespace L ...

  3. Matplotlib绘制散点图与条形图

    Matplotlib绘制散点图与条形图 绘制散点图 # 绘制散点图 from matplotlib import pyplot as plt from matplotlib import font_m ...

  4. JS Leetcode 26. 删除有序数组中的重复项 题解分析,字典与快慢双指针

    壹 ❀ 引 本题来自LeetCode26. 删除有序数组中的重复项,是一道简单题,题目描述如下: 给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组 ...

  5. JS Leetcode 80. 删除有序数组中的重复项 II题解,常规解法与快慢双指针做法

    壹 ❀ 引 今天的题目来自LeetCode80. 删除有序数组中的重复项 II,是一道难度中等,但实际挺简单的一道题,题目描述如下: 给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每 ...

  6. Linux中出现Perf: interrupt took too long

    问题原因: perf: interrupt took too long_雪虎-JL的博客-CSDN博客 解决方法: perf: interrupt took too long (3136 > 3 ...

  7. SSD接口与协议

    该图来源于<Linux开源存储全栈详解:从Ceph到容器存储>- 2.3 存储接口协议的演变 物理接口: 从物理形态上确定各种不同的接口(引脚形式等完全不同) 传输协议: 以SATA为例, ...

  8. Linux进程通信 | 管道与FIFO

    Linux进程间通信通常使用的方式有很多种,其中比较常用的包括管道(pipe)和 FIFO(命名管道).本文将介绍这两种通信方式的基本概念,并用C语言编写示例代码,来说明如何在两个进程之间使用这些IP ...

  9. 用 WebClient 代替 RestTemplate

    RestTemplate是用于执行 HTTP 请求的同步客户端,通过底层 HTTP 客户端库(例如 JDK HttpURLConnection.Apache HttpComponents 等)公开一个 ...

  10. Freaktab将于12月底关闭

    出过众多优秀固件的电视盒子论坛Freaktab, 将于2021年12月31日关闭 R.I.P