精华内容
下载资源
问答
  • Maven实现分页效果

    2019-07-02 18:46:56
    在pom.xml文件中标签下添加如下代码 <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.1.2</version&g...

    完成效果在这里插入图片描述

    1 导jar包

    在pom.xml文件中标签下添加如下代码

    <dependency>
        <groupId>com.github.pagehelper</groupId>
        <artifactId>pagehelper</artifactId>
        <version>5.1.2</version>
    </dependency>
    

    按住Ctrl鼠标点击包名可以查看对应代码即导入成功在这里插入图片描述

    2 修改配置加载映射文件

    修改UserMapper.xml,添加如下代码

            <property name="mapperLocations" value="classpath:mapper/*.xml"/>
            <property name="plugins">
                <array>
                    <bean class="com.github.pagehelper.PageInterceptor">
                        <property name="properties">
                            <props>
                                <prop key="helperDialect">mysql</prop>
                                <prop key="reasonable">true</prop>
                            </props>
                        </property>
                    </bean>
                </array>
            </property>
    

    3 修改页面请求路径

    <li><a href="${pageContext.request.contextPath}/user/findAll.do?page=1&size=5" aria-label="Previous">首页</a></li>
    

    请求路径中加上page 和 size
    page:当前页码
    size:每页的记录条数

    4 修改service中的方法

    执行具体代码前PageHelper.startPage(page,size)

    @Override
    public List<UserInfo> findAll(int page,int size) {
        PageHelper.startPage(page,size);
        return userDao.findAll();
    }
    

    5 Controller得到的userinfos对象装到pageinfo对象里

    @RequestMapping("/findAll.do")
    public ModelAndView findAll(@RequestParam(defaultValue = "1")int page,@RequestParam(defaultValue = "5")int size) {
        List<UserInfo> infos = userService.findAll( page,size);
        PageInfo pageInfo = new PageInfo(infos);
        ModelAndView mv = new ModelAndView();
        //调用保存数据函数
        mv.addObject("pageInfo",pageInfo);
        mv.setViewName("user-list");
        return mv;
    }
    

    6 JSP代码

    <div class="box-tools pull-right">
           <ul class="pagination">
            <li><a href="${pageContext.request.contextPath}/user/findAll.do?page=1&size=5" aria-label="Previous">首页</a></li>
            <li><a href="${pageContext.request.contextPath}/user/findAll.do?page=${pageInfo.pageNum-1}&size=5">上一页</a></li>
            <c:forEach begin="1" end="${pageInfo.pages}" var="pageNum">
             <li><a href="${pageContext.request.contextPath}/user/findAll.do?page=${pageNum}&size=5">${pageNum}</a></li>
            </c:forEach>
            <li><a href="${pageContext.request.contextPath}/user/findAll.do?page=${pageInfo.pageNum+1}&size=5">下一页</a></li>
            <li><a href="${pageContext.request.contextPath}/user/findAll.do?page=${pageInfo.pages}&size=5" aria-label="Next">尾页</a></li>
           </ul>
          </div>
    

    只是每次换页都需要重新链接数据库读取数据,这一点是很不实用的,在实际的应用中大概会有所优化。

    展开全文
  • 利用Struts2+Hibernate+maven进行分页查询项目介绍环境配置文件结构文件说明资源下载参考博客源代码Companyinfo实体类pageBean分页信息实体类CompanyinfoDao操作层Hibernate的工厂类HibernateSessionFactoryStruts2 ...

    项目介绍

    环境配置

    IDE:eclipse
    jdk-version:1.8
    maven的webapp应用
    

    文件结构

     文件结构

    文件说明

    Companyinfo:是一个JavaBean类,需要显示的内容
    pageBean:描述分页信息的内容
    CompanyinfoDao:Companyinfo的Dao层用来数据库访问的一个接口
    HibernateSessionFactory:封装一些Hibernate一些操作
    page:action与前台进行交换,在运行该项目的时候在浏览器的的地址栏访问
    http://localhost:8080/a/page
    show.jsp:用来显示从数据库获取的记录,并可以进行上下页进行查看
    

    资源下载

    利用Struts2+Hibernate+maven进行分页查询

    参考博客

    利用servlet+jsp+javabean进行分页查询
    s标签显示后台数据的基本用法以及iterator遍历用法
    Hibernate HQL详解

    源代码

    Companyinfo实体类

    package org.hb.bean;
    
    import java.io.Serializable;
    
    @SuppressWarnings("serial")
    public class Companyinfo implements Serializable{
    	private Integer c_id;
    	private String c_name;
    	private String c_email;
    	private String c_password;
    	private String c_brief;
    	private String c_serve;
    	public Companyinfo(Integer c_id, String c_name, String c_email, String c_password, String c_brief, String c_serve) {
    		super();
    		this.c_id = c_id;
    		this.c_name = c_name;
    		this.c_email = c_email;
    		this.c_password = c_password;
    		this.c_brief = c_brief;
    		this.c_serve = c_serve;
    	}
    	public Companyinfo() {
    		super();
    	}
    	@Override
    	public String toString() {
    		return "Companyinfo [c_id=" + c_id + ", c_name=" + c_name + ", c_email=" + c_email + ", c_password="
    				+ c_password + ", c_brief=" + c_brief + ", c_serve=" + c_serve + "]";
    	}
    	public Integer getC_id() {
    		return c_id;
    	}
    	public void setC_id(Integer c_id) {
    		this.c_id = c_id;
    	}
    	public String getC_name() {
    		return c_name;
    	}
    	public void setC_name(String c_name) {
    		this.c_name = c_name;
    	}
    	public String getC_email() {
    		return c_email;
    	}
    	public void setC_email(String c_email) {
    		this.c_email = c_email;
    	}
    	public String getC_password() {
    		return c_password;
    	}
    	public void setC_password(String c_password) {
    		this.c_password = c_password;
    	}
    	public String getC_brief() {
    		return c_brief;
    	}
    	public void setC_brief(String c_brief) {
    		this.c_brief = c_brief;
    	}
    	public String getC_serve() {
    		return c_serve;
    	}
    	public void setC_serve(String c_serve) {
    		this.c_serve = c_serve;
    	}
    	
    }
    
    

    pageBean分页信息实体类

    package org.hb.bean;
    
    public class pageBean {
    	private int everyPage; // 每页显示记录数
    	private int totalCount; // 总记录数
    	private int totalPage; // 总页数
        private int currentPage; //当前页
        private int beginIndex;			//查询起始点
    	public pageBean(int everyPage, int totalCount ,int currentPage) {
    		super();
    		this.everyPage = everyPage;
    		this.totalCount = totalCount;
    		this.currentPage = currentPage;
    		if(totalCount != 0 &&totalCount % everyPage == 0) {
    			totalPage = totalCount / everyPage;
    		} else {
    			totalPage = totalCount / everyPage + 1;
    		}
    	}
    	public int getCurrentPage() {
    		return currentPage;
    	}
    	public void setCurrentPage(int currentPage) {
    		if(currentPage<1)currentPage=1;
    		this.currentPage = currentPage;
    		
    	}
    	public int getEveryPage() {
    		return everyPage;
    	}
    	public void setEveryPage(int everyPage) {
    		this.everyPage = everyPage;
    	}
    	public int getTotalCount() {
    		return totalCount;
    	}
    	public void setTotalCount(int totalCount) {
    		this.totalCount = totalCount;
    	}
    	
    	public int getTotalPage() {
    		return totalPage;
    	}
    	public void setTotalPage(int totalPage) {
    		this.totalPage = totalPage;
    	}
    	public int getBeginIndex() {
    		setBeginIndex();
    		return beginIndex;
    	}
    	public void setBeginIndex() {
    		this.beginIndex =(currentPage - 1) * everyPage;
    	}
    
    }
    

    CompanyinfoDao操作层

    package org.hb.dao;
    
    import java.util.List;
    
    import org.hibernate.Session;
    import org.hibernate.query.Query;
    import org.hb.bean.Companyinfo;
    import org.hb.bean.pageBean;;
    
    public class CompanyinfoDao {
    	
    	public int getCount(String hql) {
    		Session session = HibernateSessionFactory.getSession();
    		return new Long((Long)session.createQuery(hql).uniqueResult()).intValue();
    	}
    		
    	public List<Companyinfo> getAll(String hql,pageBean pBean) {
    		// TODO Auto-generated method stub
    		Session session = HibernateSessionFactory.getSession();
    		List<Companyinfo> list = null;
    		try {
    			Query<Companyinfo> query = session.createQuery(hql,Companyinfo.class);
    			query.setFirstResult(pBean.getBeginIndex());
    			query.setMaxResults(pBean.getEveryPage());
    			list= query.list();
    		} catch (Exception e) {
    			// TODO: handle exception
    			e.printStackTrace();
    		}finally {
    			HibernateSessionFactory.closeSession();
    		}
    		return list;
    	}
    }
    
    

    Hibernate的工厂类HibernateSessionFactory

    package org.hb.dao;
    
    import org.hibernate.HibernateException;
    import org.hibernate.Session;
    import org.hibernate.cfg.Configuration;
    
    public class HibernateSessionFactory {
    	private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml"; // 指定配置文件路径
    	private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>(); // 定义ThreadLocal对象
    	private static Configuration configuration = new Configuration(); // 定义Configuration对象
    	private static org.hibernate.SessionFactory sessionFactory;// 定义SessionFactory对象
    	private static String configFile = CONFIG_FILE_LOCATION;
    	static {
    		try {
    			configuration.configure(configFile);// 读取配置文件
    			sessionFactory = configuration.buildSessionFactory();// 根据配置文件创建SessionFactory对象
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    
    	private HibernateSessionFactory() {
    	}
    
    	public static Session getSession() throws HibernateException {
    		Session session = (Session) threadLocal.get();// 从ThreadLocal对象中获得Session对象
    		if (session == null || !session.isOpen()) {// 判断获得的Session对象是否为空或者未打开
    			if (sessionFactory == null) {// 如果没有创建SessionFactory对象,则首先创建
    				rebuildSessionFactory();
    			}
    			// 如果SessionFactory对象不为空,则调用其openSession方法创建Session对象
    			session = (sessionFactory != null) ? sessionFactory.openSession() : null;
    			threadLocal.set(session);// 在ThreadLocal对象中保存该Session对象
    		}
    		return session;
    	}
    
    	public static void rebuildSessionFactory() {
    		try {
    			configuration.configure(configFile);// 读取配置文件
    			sessionFactory = configuration.buildSessionFactory();// 根据配置文件创建sessionFactory对象
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    
    	public static void closeSession() throws HibernateException {
    		Session session = (Session) threadLocal.get();// 从ThreadLocal对象中获得Session对象
    		threadLocal.set(null);// 将当前线程Session对象从ThreadLocal对象中移除
    		if (session != null) {
    			session.close();
    		}
    	}
    
    	public static org.hibernate.SessionFactory getSessionFactory() {// 取得SessionFactory对象
    		return sessionFactory;
    	}
    
    	public static void setConfigFile(String configFile) {// 设置新的配置文件
    		HibernateSessionFactory.configFile = configFile;
    		sessionFactory = null;
    	}
    
    	public static Configuration getConfiguration() {// 获得Configuration对象
    		return configuration;
    	}
    }
    

    Struts2 Action类:page

    package org.mystruts.action;
    
    import java.util.List;
    
    import javax.servlet.http.HttpSession;
    
    import org.apache.struts2.ServletActionContext;
    import org.hb.bean.Companyinfo;
    import org.hb.bean.pageBean;
    import org.hb.dao.CompanyinfoDao;
    
    import com.opensymphony.xwork2.ActionSupport;
    
    @SuppressWarnings("serial")
    public class page extends ActionSupport {
    	private Integer currentPage;
    	private List<Companyinfo> list;
    	
    	
    	public List<Companyinfo> getList() {
    		return list;
    	}
    
    
    
    	public void setList(List<Companyinfo> list) {
    		this.list = list;
    	}
    
    
    
    	public Integer getCurrentPage() {
    		return currentPage;
    	}
    
    
    
    	public void setCurrentPage(Integer currentPage) {
    		this.currentPage = currentPage;
    		
    	}
    	
    	public CompanyinfoDao companyinfoDao = new CompanyinfoDao();
    
    
    	public String execute() throws Exception {
    		HttpSession session = ServletActionContext.getRequest().getSession();
    		pageBean pBean = (pageBean)session.getAttribute("page");
    		if(pBean==null) {
    			String hql = "select count(*) from Companyinfo ";
    			int count = companyinfoDao.getCount(hql);
    			pBean= new pageBean(3, count, 1);
    		}
    		if(currentPage==null)currentPage=1;
    		pBean.setCurrentPage(currentPage);
    		String hql = " from Companyinfo ";
    		list = companyinfoDao.getAll(hql, pBean);
    		session.setAttribute("page", pBean);
    		return ActionSupport.SUCCESS;
    	}
    }
    
    

    Companyinfo的配置信息:Companyinfo.hbm.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-configuration PUBLIC
            "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
            "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
    
    <hibernate-mapping package="org.hb.bean">
    	<class name="Companyinfo" table="companyinfo">
    		<id name="c_id">
    			<generator class="native" />
    		</id>
    		<property name="c_name" type="string" column="c_name" />
    		<property name="c_email" type="string" column="c_email" />
    		<property name="c_password" type="string" column="c_password" />
    		<property name="c_brief" type="string" column="c_brief" />
    		<property name="c_serve" type="string" column="c_serve" />
    	</class>
    </hibernate-mapping>
    

    hibernate配置:hibernate.cfg.xml

    <!DOCTYPE hibernate-configuration PUBLIC
            "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
            "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
    <hibernate-configuration>
        <session-factory>
            <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
            <property name="hibernate.connection.url">jdbc:mysql://127.0.0.1:3306/job?useSSL=false</property>
            <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
            <property name="connection.username">root</property>
            <!--数据库密码-->
            <property name="connection.password"></property>
    
            <!--显示SQL并进行格式化代码-->
            <property name="show_sql">false</property>
            <property name="format_sql">false</property>
    
            <!--加入映射文件-->
            <mapping resource="org/hb/bean/Companyinfo.hbm.xml" />
        </session-factory>
    </hibernate-configuration>
    

    Struts2的配置:struts.xml

    <?xml version="1.0" encoding="UTF-8"?>
    
    <!DOCTYPE struts PUBLIC
            "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
            "http://struts.apache.org/dtds/struts-2.5.dtd">
    
    <struts>
        <package name="page" namespace="/" extends="struts-default">
            <action name="page" class="org.mystruts.action.page">
                <result name="success">/show.jsp</result>
            </action>
        </package>
    </struts>
    

    前台显示show.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@page import="org.hb.bean.*"%>
     <%@ taglib prefix="s" uri="/struts-tags"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>Document</title>
    </head>
    <style type="text/css">
    table {
    	border-collapse: collapse;
    	border:2px solid black;
    }
    
    th,td {
        padding: .5em .75em;
    }
    
    th {
    	border:1px solid grey;
    }
    
    td {
       	border:1px dotted grey;
    }
    </style>
     <body>
            <table>
                <caption>彩排安排</caption>
                <thead>
                    <!-- 表格头部 -->
                    <tr>
                        <th scope="rowgroup">公司名称</th>
                        <th scope="col">公司email</th>
                        <th scope="col">公司服务</th>
                    </tr>
                </thead>
                <tbody>
                    <!-- 表格主体 -->
                   <s:iterator value="list" >
                   	<tr>
                   		<td><s:property value="c_name" /></td>
                   		<td><s:property value="c_email" /></td>
                   		<td><s:property value="c_serve"/></td>
                   </tr>
                  </s:iterator>
                </tbody>
            </table>
            <a href="page?currentPage=1">首页</a>&nbsp;&nbsp;
             <s:if test="#session.page.currentPage!=1">
            	 <a href="page?currentPage=<s:property value="%{#session.page.currentPage-1}"/>">上一页</a>&nbsp;&nbsp;
             </s:if>
             <s:if test="#session.page.currentPage!=#session.page.totalPage">
            	 <a href="page?currentPage=<s:property value="%{#session.page.currentPage+1}"/>">下一页</a>&nbsp;&nbsp;
             </s:if>       
              <a href="page?currentPage=<s:property value="#session.page.totalPage"/>">尾页</a>
        </body>
    </html>
    

    maven配置文件:pom.xml

    <?xml version="1.0" encoding="UTF-8"?>
    
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
    
      <groupId>a</groupId>
      <artifactId>a</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <packaging>war</packaging>
    
      <name>a Maven Webapp</name>
      <!-- FIXME change it to the project's website -->
      <url>http://www.example.com</url>
    
      <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.7</maven.compiler.source>
        <maven.compiler.target>1.7</maven.compiler.target>
      </properties>
    
      
     <dependencies>
     
       <dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts2-core</artifactId>
        <version>2.5.20</version>
      </dependency>
      
      <dependency>
      		<groupId>mysql</groupId>
      		<artifactId>mysql-connector-java</artifactId>
      		<version>5.1.41</version>
      	</dependency>
      
      	<dependency>
      		<groupId>org.hibernate</groupId>
      		<artifactId>hibernate-core</artifactId>
      		<version>5.4.2.Final</version>
      	</dependency>
      	
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.11</version>
          <scope>test</scope>
        </dependency>
      </dependencies>
    
      <build>
        <finalName>a</finalName>
        <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
          <plugins>
            <plugin>
              <artifactId>maven-clean-plugin</artifactId>
              <version>3.1.0</version>
            </plugin>
            <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
            <plugin>
              <artifactId>maven-resources-plugin</artifactId>
              <version>3.0.2</version>
            </plugin>
            <plugin>
              <artifactId>maven-compiler-plugin</artifactId>
              <version>3.8.0</version>
            </plugin>
            <plugin>
              <artifactId>maven-surefire-plugin</artifactId>
              <version>2.22.1</version>
            </plugin>
            <plugin>
              <artifactId>maven-war-plugin</artifactId>
              <version>3.2.2</version>
            </plugin>
            <plugin>
              <artifactId>maven-install-plugin</artifactId>
              <version>2.5.2</version>
            </plugin>
            <plugin>
              <artifactId>maven-deploy-plugin</artifactId>
              <version>2.8.2</version>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </project>
    
    

    运行截图

    运行截图1运行截图2

    展开全文
  • 逆向工程使用配置文档(亲自制作),逆向工程和分页的完整项目代码,直接可以拷贝使用,适合开始学习maven的同学
  • Maven+Mybatis+Spring+SpringMVC实现分页查询(附源代码) 以下小宝鸽将分享一篇Mybatis分页功能的博文,以下将给出具体的步骤。跟着博主的节奏肯定能实现。另外最后还会附上整个project的源代码。...

    以下小宝鸽将分享一篇Mybatis分页功能的博文,以下将给出具体的步骤。跟着博主的节奏肯定能实现。另外最后还会附上整个project的源代码。假设是没有使用过maven的猿友可自行下载相关的jar包就可以。

    一、项目搭建

    关于项目搭建,小宝鸽曾经写过一篇Spirng+SpringMVC+Maven+Mybatis+MySQL项目搭建,这篇文章提供了具体的搭建过程,并且提供了源代码下载,接下来的将在这个源代码的基础上继续开发。所以建议各位猿友能够把猿友下载一下。

    二、分页插件的介绍

    博主採用的插件是PageHelper这个插件,使用起来十分方便。该插件支持以下数据库:

    Oracle
    Mysql
    MariaDB
    SQLite
    Hsqldb
    PostgreSQL
    DB2
    SqlServer(2005+)
    Informix
    H2

    相应于github的项目地址:
    https://github.com/pagehelper/Mybatis-PageHelper


    关于使用建议猿友们能够具体阅读下这里的介绍:
    http://git.oschina.net/free/Mybatis_PageHelper/blob/master/wikis/HowToUse.markdown
    读一遍之后可能还不能全然懂怎么使用。能够先看完博主的这篇文章。然后慢慢再消化,可是上面的那篇文章还是须要从头到尾看一遍。

    三、PageHelper的使用

    在”一、项目搭建“里下载好了源代码,下载的源代码导入eclipse后的结构里面。有例如以下的文件:

    这里写图片描写叙述这里写图片描写叙述

    接下来我们并不须要新增文件,直接在这些文件上改动就好了。

    3.1、引入依赖

    在pom.xml文件加入例如以下依赖:

    <!-- mybatis分页插件依赖 -->
    <dependency>
        <groupId>com.github.pagehelper</groupId>
        <artifactId>pagehelper</artifactId>
        <version>4.0.0</version>
    </dependency>

    3.2、在Mybatis配置xml中配置拦截器插件

    在mybatis-config.xml文件中加入插件后的内容例如以下:

    <?xml version="1.0" encoding="UTF-8"?>  
    <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"  
    "http://mybatis.org/dtd/mybatis-3-config.dtd">  
    <configuration>    
    <plugins>
        <!-- com.github.pagehelper为PageHelper类所在包名 -->
        <plugin interceptor="com.github.pagehelper.PageHelper">
            <property name="dialect" value="mysql"/>
            <!-- 该參数默觉得false -->
            <!-- 设置为true时。会将RowBounds第一个參数offset当成pageNum页码使用 -->
            <!-- 和startPage中的pageNum效果一样-->
            <property name="offsetAsPageNum" value="true"/>
            <!-- 该參数默觉得false -->
            <!-- 设置为true时,使用RowBounds分页会进行count查询 -->
            <property name="rowBoundsWithCount" value="true"/>
            <!-- 设置为true时,假设pageSize=0或者RowBounds.limit = 0就会查询出所有的结果 -->
            <!-- (相当于没有执行分页查询。可是返回结果仍然是Page类型)-->
            <property name="pageSizeZero" value="true"/>
            <!-- 3.3.0版本号可用 - 分页參数合理化,默认false禁用 -->
            <!-- 启用合理化时。假设pageNum<1会查询第一页。假设pageNum>pages会查询最后一页 -->
            <!-- 禁用合理化时,假设pageNum<1或pageNum>pages会返回空数据 -->
            <property name="reasonable" value="false"/>
            <!-- 3.5.0版本号可用 - 为了支持startPage(Object params)方法 -->
            <!-- 添加了一个`params`參数来配置參数映射。用于从Map或ServletRequest中取值 -->
            <!-- 能够配置pageNum,pageSize,count,pageSizeZero,reasonable,不配置映射的用默认值 -->
            <!-- 不理解该含义的前提下。不要随便复制该配置 -->
            <property name="params" value="pageNum=start;pageSize=limit;"/>
            <!-- always总是返回PageInfo类型,check检查返回类型是否为PageInfo,none返回Page -->
            <property name="returnPageInfo" value="check"/>
        </plugin>
    </plugins>
    </configuration>

    3.3、mapper文件加入sql

    在userMapper.xml文件中面加入sql:

    <!-- 依据username查询 -->
    <select id="selectUserByUserName" parameterType="java.lang.String" resultMap="BaseResultMap">
        SELECT *
        FROM t_user
        WHERE 1 = 1
        <if test="userName != null and userName !=''">
            AND USER_NAME = #{userName,jdbcType=VARCHAR}
        </if>
        ORDER BY USER_ID
    </select>

    3.4、dao加入对用方法

    UserDao.java加入例如以下方法:

    List<User> selectUserByUserName(@Param("userName") String userName);  

    记得@Param必须有

    3.5、service加入分页查询方法

    UserService.java文件加入方法

    PageInfo<User> queryByPage(String userName,Integer pageNo,Integer pageSize);

    3.6、实现类加入相应实现

    UserServiceImpl.java加入实现方法

    @Override
    public PageInfo<User> queryByPage(String userName, Integer pageNo,Integer pageSize) {
        pageNo = pageNo == null?1:pageNo;
        pageSize = pageSize == null?10:pageSize;
        PageHelper.startPage(pageNo, pageSize);
        List<User> list = userDao.selectUserByUserName(userName);
        //用PageInfo对结果进行包装
        PageInfo<User> page = new PageInfo<User>(list);
        //測试PageInfo所有属性
        System.out.println(page.getPageNum());
        System.out.println(page.getPageSize());
        System.out.println(page.getStartRow());
        System.out.println(page.getEndRow());
        System.out.println(page.getTotal());
        System.out.println(page.getPages());
        System.out.println(page.getFirstPage());
        System.out.println(page.getLastPage());
        System.out.println(page.isHasPreviousPage());
        System.out.println(page.isHasNextPage());
        return page;
    }  

    3.7、单元測试类加入分页查询測试方法

    UserServiceTest.java文件加入方法:

    @Test  
        public void queryByPageTest(){  
            PageInfo<User> page =  userService.queryByPage(null, 1, 1);
            System.out.println(page);
        }

    3.8、执行

    在小宝鸽进行了上面的改动之后,第一执行报错了!!

    。!最后是pom.xml文件凝视了以下两个包的依赖才执行成功了,凝视的依赖例如以下:

    这里写图片描写叙述

    具体原因如今小宝鸽也不知道。应该是包有冲突的原因吧,假设猿友们知道原因麻烦私信我或评论解释一下。

    然后执行单元測试类,结果例如以下:

    这里写图片描写叙述

    3.9、补充说明

    在3.8中,我凝视了那两个包依赖是web项目相关的依赖,假设仍须要进行前端开发的猿友能够引入tomcat就好了,引入结果例如以下:

    这里写图片描写叙述

    引入过程:

    选中项目右键–>build path。然后例如以下操作:

    这里写图片描写叙述

    这里写图片描写叙述

    这里写图片描写叙述

    4、源代码下载

    http://download.csdn.net/detail/u013142781/9379685

    posted on 2017-07-09 19:40 mthoutai 阅读(...) 评论(...) 编辑 收藏

    转载于:https://www.cnblogs.com/mthoutai/p/7142577.html

    展开全文
  • 需要页面查询实现分页,网上找了很多插件,单独页面实现是好的,可是放到我的页面就没有效果,苦于自己也找不到原因,故写以下代码,很是粗糙,不过懒得整理成js文件了。效果:第一页时,首页和上一页为不可点击,...

    本文仅为自己记录下编写过程,如有兴趣,或者疑问,请与我联系。

    写前背景:java开发工作经验一年,现项目为SSM框架,使用maven管理项目。需要页面查询实现分页,网上找了很多插件,单独页面实现是好的,可是放到我的页面就没有效果,苦于自己也找不到原因,故写以下代码,很是粗糙,不过懒得整理成js文件了。

    效果:第一页时,首页和上一页为不可点击,最后一页时,下一页和尾页不可点击,页数只会显示5个

    8bd560a0e6150e9edbc2dd3d8d05205b.png

    实现的js:

    //分页function

    $(document).ready(function(){

    //获取分页数

    var talPage = ${countPage};

    //获取当前页数

    var pageIndex = ${pageIndex};

    var ul = document.getElementById("getPage");

    document.getElementById("getPage").innerHTML="";

    var li_0 = document.createElement("li");

    li_0.innerHTML = "总共:"+${count}+"条,共:"+${countPage }+"页,每页:10条";

    ul.appendChild(li_0);

    if(talPage==1 || pageIndex == 1){//第一页首页和上一页不可操作

    var li_1 = document.createElement("li");

    li_1.setAttribute("class","pageItemDisable bt4");

    li_1.setAttribute("onclick","pageClick(this)")

    li_1.innerHTML = "首页";

    ul.appendChild(li_1);

    var li_2 = document.createElement("li");

    li_2.setAttribute("class","pageItemDisable bt4");

    li_2.setAttribute("onclick","pageClick(this)")

    li_2.innerHTML = "上一页"

    ul.appendChild(li_2);

    }else{

    var li_1 = document.createElement("li");

    li_1.setAttribute("class","pageItem bt4");

    li_1.setAttribute("onclick","pageClick(this)")

    li_1.innerHTML = "首页";

    ul.appendChild(li_1);

    var li_2 = document.createElement("li");

    li_2.setAttribute("class","pageItem bt4");

    li_2.setAttribute("onclick","pageClick(this)")

    li_2.innerHTML = "上一页"

    ul.appendChild(li_2);

    }

    //之前需要将,上一页创建出来

    if(talPage<=5){

    //总页数在0到5之间时,显示实际的页数

    for(var i=0;i

    if(i+1 == pageIndex){//循环数和当前页相等时,为当前页样式

    var li = document.createElement("li");

    li.setAttribute("class","pageItemActive");

    li.setAttribute("onclick","pageClick(this)")

    li.innerHTML = i+1;

    ul.appendChild(li);

    }else{

    var li = document.createElement("li");

    li.setAttribute("class","pageItem");

    li.setAttribute("onclick","pageClick(this)")

    li.innerHTML = i+1;

    ul.appendChild(li);

    }

    }

    }else if(talPage>5){

    //总页数大于5时,只显示五页,多出的隐藏

    //判断当前页的位置

    if(pageIndex<=3){//当前页小于等于3时,显示1-5

    for(var i=0;i<5;i++){

    if(i+1 == pageIndex){//循环数和当前页相等时,为当前页样式

    var li = document.createElement("li");

    li.setAttribute("class","pageItemActive");

    li.setAttribute("onclick","pageClick(this)")

    li.innerHTML = i+1;

    ul.appendChild(li);

    }else{

    var li = document.createElement("li");

    li.setAttribute("class","pageItem");

    li.setAttribute("onclick","pageClick(this)")

    li.innerHTML = i+1;

    ul.appendChild(li);

    }

    }

    }else if(pageIndex>talPage-5){//当前页为最后五页时

    for(var i=talPage-5;i

    if(i+1 == pageIndex){//循环数和当前页相等时,为当前页样式

    var li = document.createElement("li");

    li.setAttribute("class","pageItemActive");

    li.setAttribute("onclick","pageClick(this)")

    li.innerHTML = i+1;

    ul.appendChild(li);

    }else{

    var li = document.createElement("li");

    li.setAttribute("class","pageItem");

    li.setAttribute("onclick","pageClick(this)")

    li.innerHTML = i+1;

    ul.appendChild(li);

    }

    }

    }else{//当前页为中间时

    for(var i=pageIndex-3;i

    if(i+1 == pageIndex){//循环数和当前页相等时,为当前页样式

    var li = document.createElement("li");

    li.setAttribute("class","pageItemActive");

    li.setAttribute("onclick","pageClick(this)")

    li.innerHTML = i+1;

    ul.appendChild(li);

    }else{

    var li = document.createElement("li");

    li.setAttribute("class","pageItem");

    li.setAttribute("onclick","pageClick(this)")

    li.innerHTML = i+1;

    ul.appendChild(li);

    }

    }

    }

    }

    if(pageIndex == talPage){//当前页为最大页时,下一个和尾页不可操作

    var li_3 = document.createElement("li");

    li_3.setAttribute("class","pageItemDisable bt4");

    li_3.setAttribute("onclick","pageClick(this)")

    li_3.innerHTML = "下一页"

    ul.appendChild(li_3);

    var li_4 = document.createElement("li");

    li_4.setAttribute("class","pageItemDisable bt4");

    li_4.setAttribute("onclick","pageClick(this)")

    li_4.innerHTML = "尾页"

    ul.appendChild(li_4);

    }else{

    var li_3 = document.createElement("li");

    li_3.setAttribute("class","pageItem bt4");

    li_3.setAttribute("onclick","pageClick(this)")

    li_3.innerHTML = "下一页"

    ul.appendChild(li_3);

    var li_4 = document.createElement("li");

    li_4.setAttribute("class","pageItem bt4");

    li_4.setAttribute("onclick","pageClick(this)")

    li_4.innerHTML = "尾页"

    ul.appendChild(li_4);

    }

    if(0 == talPage){//一页都没有时,将首页,上一页,下一个,尾页都置为不可操作

    $(".bt4").removeClass("pageItem");

    $(".bt4").addClass("pageItemDisable");

    }

    });

    //分页的按钮的点击事件

    function pageClick(obj){

    var talPage = ${countPage};//总页数

    var pageIndex = ${pageIndex};//当前页数

    var text = obj.innerText;//点击标签的值

    var url = "/service/getServiceList.action";

    //如果为不可操作的直接返回false

    if($(obj).attr("class").indexOf("pageItemDisable")>=0){

    return false;

    }

    with(document.forms["serviceForm"]){

    if("首页" == text){

    action = url;

    }else if("上一页" == text){

    //计算出上一页到底是第几页

    //第一种方法,获取当前li中class为pageItemActive的标签,取其值

    //第二种方法,直接el ${pageIndex}获取当前页数,然后-1

    //var a = $(obj).parent().children("pageItemActive").html();

    //如果当前页是1,不-,地址和首页相同

    if(pageIndex <= 1){

    action = url;

    }else{

    action = url+"?pageIndex="+(pageIndex-1);

    }

    }else if("下一页" == text){

    //如果当前页为尾页,则下一页为尾页,url跟当前url一样

    if(pageIndex == talPage){

    action = url;

    }else{

    action = url+"?pageIndex="+(pageIndex+1);

    }

    }else if("尾页" == text){

    //如果当前页为尾页,则url不变

    if(pageIndex == talPage){

    action = url;

    }else{

    action = url+"?pageIndex="+talPage;

    }

    }else{

    //点击页数时

    action = url+"?pageIndex="+text;

    }

    submit();

    }

    }

    页面元素:

    所用到的css样式:

    .page{

    list-style: none;

    }

    .page>li{

    float: left;

    padding: 5px 10px;

    cursor: pointer;

    }

    .page .pageItem{

    border: solid thin #DDDDDD;

    margin: 5px;

    }

    .page .pageItemActive{

    border: solid thin #0099FF;

    margin: 5px;

    background-color: #0099FF;

    color:white;

    }

    .page .pageItem:hover{

    border: solid thin #0099FF;

    background-color: #0099FF;

    color:white;

    }

    .page .pageItemDisable{

    border: solid thin #DDDDDD;

    margin: 5px;

    background-color: #DDDDDD;

    }

    java中处理:

    //获取当前页

    String pageIndex = "1";//默认为第一页

    if(null != request.getParameter("pageIndex") && !"".equals(request.getParameter("pageIndex"))){

    pageIndex = (String)request.getParameter("pageIndex");

    }

    //最后需要将当前页返回给前台,用于样式的展示

    request.setAttribute("pageIndex", pageIndex);

    //一顿计算。。。。,取得startNum,endNum

    String startNum = Integer.toString(((Integer.parseInt(pageIndex)-1)*10)+1);

    String endNum = Integer.toString(Integer.parseInt(startNum)+9);

    //根据条件查询

    List serviceList = serviceServiceImpl.findAll(service,startNum,endNum);

    //查询出总数,用作分页

    Integer serviceCount = serviceServiceImpl.getServiceCount(service);

    request.setAttribute("count",serviceCount);//总数

    Integer countPage = serviceCount/10;

    if((serviceCount/10.0-serviceCount/10)>0){//有小数,总页数+1

    countPage = countPage+1;

    }

    request.setAttribute("countPage",countPage);//总页数

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    展开全文
  • 分页插件 4.SSM的集成 项目结构 导包(maven项目自动下载就ok了) 相关jar包 https://pan.baidu.com/s/1r7-4WF65UW9M44Lda3jCrQ 提取码: gbm4 配置文件 web.xml xmlns:xsi=...
  • SSM+maven+bootstrap实现分页

    千次阅读 2017-06-22 17:42:23
    SSM+maven+bootstrap实现分页分页是Java WEB项目常用的功能,由于刚学习Java这门语言,做起来有些费劲,在此记录一下,既能帮助我自己,也能帮助像我一样刚入门的程序猿。 使用的框架(MyBatis+SpringMVC+Spring)...
  • maven-mybatis分页插件配置

    千次阅读 2016-04-21 14:49:01
    1.pom.xml ...3.代码 PageBounds pageBounds = new PageBounds(page, pageSize); Map map=new HashMap(); map.put("username", "%"); List list=session.selectList("com.zap.demo2.map
  • SpringMvc+Maven框架下简单分页实现

    千次阅读 2016-06-29 13:46:52
    SpringMvc+Maven框架下简单分页实现 本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和图片上传 LaTex数学公式 UML序列图和...
  • 一、集成步骤 1、添加PageHelper插件依赖 2、注册分页对象PageHelper到Spring容器中 3、创建分页实体类 ...一行代码,既可自动实现分页功能。重点注意该行代码必须在业务SQL语句代码上一行。  二、实现...
  • PageHelper分页序实现效果正文1.准备2.原理3....maven项目中,分页方式还有【Pager-taglib分页】方式 参考我前一篇博客:https://blog.csdn.net/cungudafa/article/details/98076810 正文 1.准备 ...
  • Java代码部分: /* * ResponseBody用于将Controller的方法返回的对象,通过适当的 HttpMessageConverter转换* 为指定格式后,写入到Response对象的 body数据区 //主要用于json返回 */ @ResponseBody //produces指定...
  • 第一步 首先我们在pom.xml文件中加入包代码 如图所示第二步 然后在Mybatis配置文件spring-mybatis.xml (文件名可能不一样 看代码就知道了)在对应位置加入红框中的内容注:我这里的Mybatis的配置文件是在spring-...
  • 当时拿mybatis plus与tk相比虽然觉得plus功能已经足够强大了(如逻辑删除、sql打印插件、分页插件、雪花算法生成id等),但plus到了3.0之后新增的函数式编程才让我觉得开发者的体验质变版的提升,不会再出现字段输错.....
  • 原因: PageHelper的jar版本太低了换一个和mysql数据库连接的jar版本相近版本。...如果你想排查是不是pagehelper的问题可以先注销掉PageHelper的代码如果启动正常那就是我上面所说的问题了!!! ...
  • 目前小编在学习spring+springmvc+mybatis+maven整合开发,在开发后台的时候肯定会用到分页,度娘上面各种五花八门的,代码长串长串的,就没一个能实现的。今天刚填完坑,所以记录一下! 1、首先展示一下效果吧,...
  • 当时拿mybatis plus与tk相比虽然觉得plus功能已经足够强大了(如逻辑删除、sql打印插件、分页插件、雪花算法生成id等),但plus到了3.0之后新增的函数式编程才让我觉得开发者的体验质变版的提升,不会再出现字段输错.....
  • 由于maven只要配置pom.xml就可以从仓库下载jar包。因此我们首先看看pom.xml的配置。注意 ...... org.mybatis mybatis 3.2.3 com.microsoft.sqlserver sqljdbc4 4.0 ...
  • mybatis源码,含理解注释+练习代码(mybatis测试)+插件(generator插件,分页插件)+log4j2+maven
  • 自动生成代码插件,通过Maven插件配置,一键生成单表的所有CRUD操作,加速你的业务开发 持久层基于Mybatis-Plus 主要功能 单表增删改查 单表的条件查询,分页查询 基于druid,数据库监控 统一查询条件模型 统一...
  • ssm学生宿舍管理系统,maven多模块搭建,实现用户分角色登录+分页等技术 项目描述maven分模块项目+SSM宿舍管理系统+spring mvc+jquery+bootstrap+多模块+svn+分角色登录+分页+拦截器+收邮件。发邮件等。。。。。。 ...
  • 实际上,Spring Data Jpa对于分页以及排序的查询也有着完美的支持,接下来,我们来学习如何通过Pageable来对数据库进行分页查询。添加maven依赖首先我们需要引入Jpa,数据库直接使用hsqldb内存数据库就可以了:4.0.0...
  • 分页肯定是有页数,每页数据条数(便于计算位置,后面看代码知道),查询条件,还有要显示 前端传递第一步的数据(除显示数据list,这是返回的)去后台,那么这里要封装下,规范请求参数。(PageParam &lt;T&...
  • 前提:请将es的环境(es服务,IK中文分词器,head-master插件等)搭建好,本文章使用的是java代码实现的es的增删改查操作(使用的是测试环境) 环境准备 在pom文件中导入坐标(第一次导入时间可能有点长,请耐心等待) &...
  • 想着反正没什么事做,不如写个通用的代码生成器插件吧,因为mybatis-generator生成的代码只是针对mybatis,之前项目大多都是用springMvc加上mybatis,有好多通用的业务逻辑比如增、删、改、查、分页查询等等再去手动...
  • ssm环境加入PageHelper插件步骤: 1.修改pom.xml,添加pageHelper所需要的jar包,我使用的时候最新版本是5.0.1,具体PageHelper参考文档:... 代码如下: <gr
  • 前言本篇博文面对的是刚接触JavaWeb开发的四层框架结构(前后端分离的开发模式),开始摆脱在JSP页面嵌套大量Java代码的Low状或者苦脑于数据库的操作问题(尤其是SQL代码很烦有木有),学完SSM框架后你就会发现后台...
  • 上一篇我们介绍《构建dubbo分布式平台-maven构建ant-framework核心代码annotation》,今天重点讲解的是ant-framework核心代码Base封装过程。   因为涉及到springmvc、mybatis的集成,为了使项目编码更简洁...
  • 上一篇我们介绍《构建dubbo分布式平台-maven构建ant-framework核心代码annotation》,今天重点讲解的是ant-framework核心代码Base封装过程。 因为涉及到springmvc、mybatis的集成,为了使项目编码更简洁易用,这边...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 437
精华内容 174
关键字:

maven分页代码