zoukankan      html  css  js  c++  java
  • springmvc+spring+mybatis分页查询实例版本1,ver1.0

    无聊做做看看,几乎没有怎么仔细做过这方面的,总是以为很简单,想想就会,实际做起来结合工作经验感觉还是挺有收获的,可以用在自己的项目上

    第一版本思路:框架使用ssm,这个无所谓,采用分页语句查询指定页面的数据,根据数据记录总数,页面显示记录数计算有多少页,每次提交后计算当前页显示的上标和下标,然后进行分页查询,功能实现了,效果不满意,代码贴上,接口就不贴了,直接上接口的实现类,数据根据sql语句自己造吧

    package com.mi.controller;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    import com.mi.form.PageTableForm;
    import com.mi.service.impl.UserInfoServiceImpl;
    
    @Controller
    @RequestMapping("/user")
    public class UserInfoCotroller {
    
        @Autowired
        private UserInfoServiceImpl userInfoServiceImpl;
    
        private PageTableForm pageTableForm;
    
        @RequestMapping("/init")
        public String init(Model model) {
            pageTableForm = new PageTableForm();
            return "redirect:/user/query.do";
        }
    
        @RequestMapping("/query")
        public String queryUserInfo(Model model, PageTableForm pageTableForm) {
            int currentPage = pageTableForm.getCurrentPage() == 0 ? 1 : pageTableForm.getCurrentPage();
            pageTableForm.setCurrentPage(currentPage);
            pageTableForm = userInfoServiceImpl.queryUserInfo(pageTableForm);
            model.addAttribute("pageTableForm", pageTableForm);
            return "userInfo";
        }
    
        public UserInfoServiceImpl getUserInfoServiceImpl() {
            return userInfoServiceImpl;
        }
    
        public void setUserInfoServiceImpl(UserInfoServiceImpl userInfoServiceImpl) {
            this.userInfoServiceImpl = userInfoServiceImpl;
        }
    
        public PageTableForm getPageTableForm() {
            return pageTableForm;
        }
    
        public void setPageTableForm(PageTableForm pageTableForm) {
            this.pageTableForm = pageTableForm;
        }
    
    }
    package com.mi.service.impl;
    
    import java.util.List;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    import com.mi.dao.UserInfoMapper;
    import com.mi.entity.User;
    import com.mi.form.PageTableForm;
    import com.mi.service.UserInfoService;
    
    @Service("userInfoService")
    public class UserInfoServiceImpl implements UserInfoService {
    
        @Autowired
        private UserInfoMapper userInfoMapper;
        
        private List<User> userList;
        @Override
        public PageTableForm queryUserInfo(PageTableForm pageTableForm) {
            pageTableForm = getOperation(pageTableForm);
            int beginIndex = pageTableForm.getBeginIndex();
            //int endIndex = pageTableForm.getEndIndex();
            userList = userInfoMapper.queryUserInfo(beginIndex);
            pageTableForm.setUserList(userList);
            return pageTableForm;
        }
        
        public PageTableForm getOperation(PageTableForm pageTableForm) {
            pageTableForm.setUserCount(getCount());
            if (pageTableForm.getUserCount() % 3 == 0) {
                pageTableForm.setPageCount(pageTableForm.getUserCount() / pageTableForm.getPageSize());
            } else {
                pageTableForm.setPageCount(pageTableForm.getUserCount() / pageTableForm.getPageSize() + 1);
            }
            
            pageTableForm.setBeginIndex(pageTableForm.getCurrentPage() * 3 - 3);
        //    pageTableForm.setEndIndex(pageTableForm.getCurrentPage() * 3);
    
            return pageTableForm;
        }
    
        public UserInfoMapper getUserInfoMapper() {
            return userInfoMapper;
        }
        public void setUserInfoMapper(UserInfoMapper userInfoMapper) {
            this.userInfoMapper = userInfoMapper;
        }
    
        @Override
        public int getCount() {
            return userInfoMapper.getCount();
        }
    
        public List<User> getUserList() {
            return userList;
        }
    
        public void setUserList(List<User> userList) {
            this.userList = userList;
        }
    
    }
    package com.mi.dao;
    
    import java.util.List;
    
    import org.apache.ibatis.annotations.Param;
    import org.springframework.stereotype.Repository;
    
    import com.mi.entity.User;
    
    @Repository("userInfoMapper")
    public interface UserInfoMapper {
        
        public List<User> queryUserInfo(@Param("beginIndex") int beginIndex);
        
        public int getCount();
    }
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="com.mi.dao.UserInfoMapper">
        
        
        <select id="queryUserInfo" resultType="com.mi.entity.User">
            SELECT id,user_name userName,age FROM user_t where 1=1 limit #{beginIndex},3
        </select>
        
        <select id="getCount" resultType="int">
            SELECT count(*) FROM user_t
        </select>
        <!-- <insert id="addUser" parameterType="com.mi.entity.User"
            flushCache="true">
            INSERT INTO user_t (id,user_name,password,age) VALUES
            (#{id},#{userName},#{password},#{age})
        </insert>
        
        <delete id="deleteUser" parameterType="com.mi.entity.User" flushCache="true">
            DELETE FROM user_t where id=#{id}
        </delete>
        
        <update id="updateUser" parameterType="com.mi.entity.User" flushCache="true">
            UPDATE user_t SET user_name = 'zzxy' WHERE id=#{id}
        </update> -->
        
    </mapper>
    package com.mi.form;
    
    import java.util.List;
    
    import com.mi.entity.User;
    
    public class PageTableForm {
    
        private int currentPage;// 当前页
        private int pageSize = 3;// 每页记录数
        private int beginIndex;// 开始位置
        private int endIndex;// 结束位置
        private int pageCount;// 共多少页
        private int userCount;// 共多少条记录
        
        private List<User> userList;
    
    ...省略get set    
    }
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    <script type="text/javascript"
        src="<%=request.getContextPath()%>/js/jquery-1.8.3.min.js"></script>
    <script type="text/javascript">
        $(function() {
            $("#prev").click(
                    function() {
                        var currentPage = parseInt($("#currentPage").val()) - 1;
                        $("#currentPage").val(currentPage);
                        $("#form0").submit();
                    })
    
            $("#next").click(
                    function() {
                        var currentPage = parseInt($("#currentPage").val()) + 1;
                        $("#currentPage").val(currentPage);
                        $("#form0").submit();
                    })
        })
    </script>
    </head>
    <body>
        <form action="${pageContext.request.contextPath}/user/query.do" id="form0" method="POST">
            <table border="1">
                <thead>
                    <tr>
                        <td width="60px">id</td>
                        <td width="120px">name</td>
                        <td width="60px">age</td>
                    </tr>
                </thead>
                <tbody>
                    <c:forEach var="user" items="${pageTableForm.userList}" varStatus="status">
                        <tr>
                            <td>${user.id}</td>
                            <td>${user.userName}</td>
                            <td>${user.age}</td>
                        </tr>
                    </c:forEach>
                    <tr>
                        <td><c:if test="${pageTableForm.currentPage > 1}">
                                <input id="prev" type="button" value="上一页">
                            </c:if></td>
                        <td>当前<label>${pageTableForm.currentPage}</label>页/共<label>${pageTableForm.pageCount}</label></td>
                        <td><c:if test="${pageTableForm.currentPage < pageTableForm.pageCount}">
                                <input id="next" type="button" value="下一页">
                            </c:if></td>
                    </tr>
                    
                </tbody>
            </table>
            <input id="currentPage" type="hidden" name="currentPage" value="${pageTableForm.currentPage}">
        </form>
    </body>
    </html>

    最终效果:

    每次都会提交一次请求,比较差强人意,下个版本计划用js实现,拒绝垃圾代码

  • 相关阅读:
    BestCoder6 1002 Goffi and Squary Partition(hdu 4982) 解题报告
    codeforces 31C Schedule 解题报告
    codeforces 462C Appleman and Toastman 解题报告
    codeforces 460C. Present 解题报告
    BestCoder3 1002 BestCoder Sequence(hdu 4908) 解题报告
    BestCoder3 1001 Task schedule(hdu 4907) 解题报告
    poj 1195 Mobile phones 解题报告
    二维树状数组 探索进行中
    codeforces 460B Little Dima and Equation 解题报告
    通过Sql语句控制SQLite数据库增删改查
  • 原文地址:https://www.cnblogs.com/tingbogiu/p/5863688.html
Copyright © 2011-2022 走看看