MyBatis分页插件PageHelper实现分页

首先创建数据库,这里我就不写了,
先看一下效果图
在这里插入图片描述

废话不多说,直接上代码。
页面我用的是layui框架,这里的页面就不全写出来了,直接上重点部分

<script>
layui.use('table', function(){
  var table = layui.table;
  
  table.render({
    elem: '#test'
    <!-- url:获取数据的路径-->
    ,url:'userPage'
     <!-- limits:这里的三个参数我还不是很明白,有知道的大佬希望评论数一数-->
    ,limits: [1,5,10]
     <!--limit:参数为每页要显示几条数据 -->
  ,limit: 1
    ,toolbar: '#toolbarDemo'
    ,title: '订单信息表'
    ,cols: [[
    <!--field: '实体类的字段' -->
    	{field:'uId', width:80, title: '编号', edit: 'text'},
    	{field:'uName', width:115, title: '订单名称', edit: 'text'},
    	{field:'uPassword', width:105, title: '时间', edit: 'text'},
    	{field:'uRealName', width:80, title: '下单人', edit: 'text'},
    	{field:'eMail', width:120, title: '目的地', edit: 'text'},
    	{field:'uPhone', width:200, title: '备注', edit: 'text'},
    	{field:'uAddress', width:200, title: '备注', edit: 'text'},

    	  {
				field : 'pic',
				title : '管理操作',
				width : 120,
				style : 'height:100%;max-width:100%;',
				toolbar: '#barDemo'
				
			}
    ]]
    ,page: true
  });
 table.on('tool(test)', function(obj){
    var data = obj.data;
    //console.log(obj)
    if(obj.event === 'del'){
      layer.confirm('确定取删除吗?', function(index){
    	  $.ajax({
              url:'deleted',
              type:'get',
              data:{'id':data.id},//向服务端发送删除的id
              success:function(msg){
                  if(msg=='success'){
                      obj.del(); //删除对应行(tr)的DOM结构,并更新缓存
                      layer.close(index);
                      console.log(index);
                      layer.msg("操作成功",{icon:1});
                  }
                  else{
                      layer.msg("操作失败",{icon:5});
                  }
              }
          });
      });
    } else if(obj.event === 'edit'){
    	 layer.open({  
				type: 2 //此处以iframe举例
					,
				title: '修改信息',
				area: ['600px', '550px'],
				shade: 0,
				maxmin: true,
				content:'findidd?id='+data.id,
			    end:function(){
			    	layui.table.reload('test');//刷新表格
			    	location.reload();//弹出层结束后,刷新主页面
			    	//layer.msg("修改成功",{icon:1});
	            }
			});
    }
  });
});

layui.use("layer", function(){
	 var layer = layui.layer;
	 $("#p1").click(function(){
		 layer.open({
			 
			 type: 2,
			 area: ['500px','300px'],
			 
			 content:('addd'),
			 end:function(){
			    	layui.table.reload('test');//刷新表格
			    	location.reload();//弹出层结束后,刷新主页面
			    	//layer.msg("添加成功",{icon:1});
	            }
		 });
	 });
});
function createFormat(d){
	return d;
}
</script>

然后就是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>
        <!-- 配置全局属性 -->
        <settings>
                <!-- 使用jdbc的getGeneratedKeys获取数据库自增主键值 -->
                <setting name="useGeneratedKeys" value="true" />

                <!-- 使用列别名替换列名 默认:true -->
                <setting name="useColumnLabel" value="true" />

                <!-- 开启驼峰命名转换:Table{create_time} -> Entity{createTime} -->
                <setting name="mapUnderscoreToCamelCase" value="true" />
        </settings>
            <plugins>
	  		<plugin interceptor="com.github.pagehelper.PageInterceptor">
		  		<!-- <property name="dialect" value="mysql"/> -->
		        <property name="offsetAsPageNum" value="false"/>
		        <property name="rowBoundsWithCount" value="false"/>
		        <property name="pageSizeZero" value="true"/>
		        <property name="reasonable" value="false"/>
		        <property name="supportMethodsArguments" value="false"/>
		        <property name="returnPageInfo" value="none"/>
	  		</plugin>
	  	</plugins>
</configuration>

webdao.xml

<?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"  
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
	http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
	http://www.springframework.org/schema/aop 
	http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
	http://www.springframework.org/schema/tx 
	http://www.springframework.org/schema/tx/spring-tx-4.3.xsd
	http://www.springframework.org/schema/context 
	http://www.springframework.org/schema/context/spring-context-4.3.xsd">
	
	<!-- 1、加载jdbc.properties配置 -->
	<context:property-placeholder location="classpath:jdbc.properties"/>
	
	<!-- 2、配置数据源 -->
	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
	        <property name="driverClassName" value="${jdbc.driver}"/>
	        <property name="url" value="${jdbc.url}"/>
	        <property name="username" value="${jdbc.username}"/>
	        <property name="password" value="${jdbc.password}"/>
	</bean>

	<!-- 3、配置SqlSessionFactory -->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<!-- 注入数据源 -->
		<property name="dataSource" ref="dataSource"></property>
		<!-- 加载mybatis的配置文件 -->
		<property name="configLocation" value="classpath:mybatis-config.xml"></property>
		<!-- 扫描pojo包 -->
		<property name="typeAliasesPackage" value="com.hp.pojo"></property>
		<!-- 扫描mapper所需要的xml文件 ,使用xml方式-->
		<!-- <property name="mapperLocations" value="classpath:mapper/.xml"></property> -->
	</bean>

	<!-- 4、配置扫描Dao接口包,注入给spring管理 -->
	<bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		
		<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
		<!-- 扫描dao层接口 -->
		<property name="basePackage" value="com.hp.mapper"></property>
	</bean>
	
	<!-- 5、配置sqlSessionTemplate -->
	<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
		<constructor-arg index="0">
			<ref bean="sqlSessionFactory"/>
		</constructor-arg>
	</bean>
</beans>

webmvc.xml

<?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: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.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd">
        
        <!-- 开启mvc注解驱动 -->
		<mvc:annotation-driven conversion-service="conversionService">
			<mvc:message-converters>
				<bean
					class="org.springframework.http.converter.StringHttpMessageConverter">
					<property name="supportedMediaTypes">
						<list>
							<value>application/json;charset=UTF-8</value>
						</list>
					</property>
				</bean>
			</mvc:message-converters>
		</mvc:annotation-driven>
        
        <!-- 默认处理器 -->
	    <mvc:default-servlet-handler/>
	    
		<!-- 开启扫描包,需要去掉service层不进行扫描,可以避免事务失效,但是在service事务配置文件中增加扫描 -->
		<context:component-scan base-package="com.hp">
			<!-- 配置不需要扫描 service层注解 -->
 			<context:exclude-filter type="annotation"
				expression="org.springframework.stereotype.Service" />
		</context:component-scan>
	
		<!--过滤静态资源,不进行拦截 -->
		<mvc:resources mapping="/resources/**" location="/resources/" />
		<mvc:resources location="/js/" mapping="/js/**"></mvc:resources>
		<mvc:resources location="/image/" mapping="/image/**"></mvc:resources>
		<mvc:resources location="/css/" mapping="/css/**"></mvc:resources>
		
		<!-- 分发器 -->
		<bean
			class="org.springframework.web.servlet.view.InternalResourceViewResolver">
			<property name="prefix" value="/WEB-INF/views/" />
			<property name="suffix" value=".jsp" />
		</bean>
		
		<bean id="multipartResolver"
			class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
			<property name="maxUploadSize" value="100000" />
		</bean>
		
		<!-- 配置springMVC拦截器 -->
	<!-- 	<mvc:interceptors>
			<mvc:interceptor>
				拦截所有请求
				<mvc:mapping path="/**"/>
				<bean class="com.hp.interceptor.LoginInterceptor"></bean>
			</mvc:interceptor>
		</mvc:interceptors> -->
		 
</beans>

webService.xml

<?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:tx="http://www.springframework.org/schema/tx" 
	xmlns:aop="http://www.springframework.org/schema/aop" 
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
	http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
	http://www.springframework.org/schema/aop 
	http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
	http://www.springframework.org/schema/tx 
	http://www.springframework.org/schema/tx/spring-tx-4.3.xsd
	http://www.springframework.org/schema/context 
	http://www.springframework.org/schema/context/spring-context-4.3.xsd">
	
	<!-- 扫描 包下所有的注解类型 -->
	<context:component-scan base-package="com.hp.service.impl"></context:component-scan>

	<!-- 配置事务管理器 -->
    <bean id="transactionManager"
           class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
          <!-- 注入数据库连接池 -->
           <property name="dataSource" ref="dataSource" />
    </bean>
	 
	<!-- 开启注解事务 -->
	<tx:annotation-driven transaction-manager="transactionManager"/>
</beans>

实体类pojo

package com.hp.pojo;



/**
 * 这写注解是下载玩插件才能用--这里我们就用生成的get和set方法就可以了
 *@AllArgsConstructor有参构造方法
 * @NoArgsConstructor无参构造方法
 * @Setter set方法
 * @Getter get方法
 *
 */

public class User {
    private Integer uId;
    private String uName;
    private String uPassword;
    private String uRealName;
    private String eMail;
    private String uPhone;
    private String uAddress;

    public Integer getuId() {
        return uId;
    }

    public void setuId(Integer uId) {
        this.uId = uId;
    }

    public String getuName() {
        return uName;
    }

    public void setuName(String uName) {
        this.uName = uName;
    }

    public String getuPassword() {
        return uPassword;
    }

    public void setuPassword(String uPassword) {
        this.uPassword = uPassword;
    }

    public String getuRealName() {
        return uRealName;
    }

    public void setuRealName(String uRealName) {
        this.uRealName = uRealName;
    }

    public String geteMail() {
        return eMail;
    }

    public void seteMail(String eMail) {
        this.eMail = eMail;
    }

    public String getuPhone() {
        return uPhone;
    }

    public void setuPhone(String uPhone) {
        this.uPhone = uPhone;
    }

    public String getuAddress() {
        return uAddress;
    }

    public void setuAddress(String uAddress) {
        this.uAddress = uAddress;
    }

    @Override
    public String toString() {
        return "User{" +
                "uId=" + uId +
                ", uName='" + uName + '\'' +
                ", uPassword='" + uPassword + '\'' +
                ", uRealName='" + uRealName + '\'' +
                ", eMail='" + eMail + '\'' +
                ", uPhone='" + uPhone + '\'' +
                ", uAddress='" + uAddress + '\'' +
                '}';
    }
}

接下来就是Controller层的代码

package com.hp.controller;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.PageInfo;
import com.hp.pojo.User;
import com.hp.service.IUserService;
@Controller
public class UserController {
	@Resource
	private IUserService userService;
	@ResponseBody
	@RequestMapping("userPage")
	public String userPage(@RequestParam("page") Integer pageNum, @RequestParam("limit") Integer pageSize) {
	//首先是对pageNum,pageSize进行判断,如果为零就对其进行赋值
		if(pageNum==null) {
			pageNum = 1;
		}
		if(pageSize==null) {
			pageSize =2;
		}
	//创建pageInfo对象把实体类user放进去
		PageInfo<User> info =new PageInfo<User>();
	//把刚刚接收到的数据pageNum,pageSize放进pageInfo对象里面
		info.setPageNum(pageNum);
		info.setPageSize(pageSize);‘
	//调用Service层的方法userPage(info)
	 PageInfo<User> page= userService.userPage(info);
	//创建JSONObject对象
		JSONObject object = new JSONObject();
		object.put("code", 0);
		object.put("msg", "");
		object.put("count", page.getTotal());
		object.put("data", page.getList());
	//把json数据返回到前台页面
		return object.toJSONString();
	}

}

Service接口的方法

package com.hp.service;
import java.util.List;
import com.github.pagehelper.PageInfo;
import com.hp.pojo.User;
public interface IUserService {
	public PageInfo<User> userPage(PageInfo<User> info);
}

Service实现类的方法

package com.hp.service.impl;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.hp.mapper.UserMapper;
import com.hp.pojo.User;
import com.hp.service.IUserService;
@Service
@Transactional
public class UserService implements IUserService{
	@Resource
	private UserMapper userMapper;
	public PageInfo<User> userPage(PageInfo<User> info) {
	PageHelper.startPage(info.getPageNum(),info.getPageSize());
		List<User> list = userMapper.userPage();
		PageInfo<User> page=new PageInfo<User>(list,info.getSize());
		return page;
	}
}

Mapper层的接口

package com.hp.mapper;

import java.util.List;
import com.github.pagehelper.PageInfo;
import com.hp.pojo.User;

public interface UserMapper {
	public List<User> userPage();
}

mapper.xml的配置

<?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.hp.mapper.UserMapper">
<!-- -->
 <select id="userPage" resultType="com.hp.pojo.User">
 select * from user
 </select>
</mapper>

这样就ok了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

幻’梦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值