Mybatis-ThreadLocal分页

mybatis-分页显示数据

转载原文  http://www.cnblogs.com/yangw/p/3315398.html

分页用到的两个实体类

package com.yangwei.shop.entity;

/**

 * 注意  getsetremove 方法与一般的实体类的不同

*/

public classSystemContext {

private static ThreadLocal<Integer> pageSize = new ThreadLocal<Integer>();

private static ThreadLocal<Integer> pageIndex = new ThreadLocal<Integer>();

private static ThreadLocal<Integer> pageOffset = new ThreadLocal<Integer>();

/**

     * 升序还是降序

     */

private static ThreadLocal<String> order = new ThreadLocal<String>();

/**

     * 根据那个字段排序

     */

private static ThreadLocal<String> sort = new ThreadLocal<String>();

public static String getOrder() {

return order.get();

}

public static void setOrder(String _order) {

order.set(_order);

}

public static void removeOrder() {

order.remove();

}

public static String getSort() {

return sort.get();

}

public static void setSort(String _sort) {

sort.set(_sort);

}

public static void removeSort() {

sort.remove();

}

public static int getPageOffset() {

return pageOffset.get();

}

public static void setPageOffset(int _pageOffset) {

pageOffset.set(_pageOffset);

}

public static void removePageOffset() {

pageOffset.remove();

}

public static void setPageSize(int _pageSize) {

pageSize.set(_pageSize);

}

public static int getPageSize() {

return pageSize.get();

}

public static void removePageSize() {

pageSize.remove();

}

public static void setPageIndex(int _pageIndex) {

pageIndex.set(_pageIndex);

}

public static int getPageIndex() {

return pageIndex.get();

}

public static void removePageIndex() {

pageIndex.remove();

}

}

package com.yangwei.shop.entity;

import java.util.List;

public class Pager<E> {

/**

     * 第几页

     */

private int pageIndex;

/**

     * 每页显示多少条

     */

private int pageSize;

/**

     * 分页的开始值

     */

private int pageOffset;

/**

     * 总共多少条记录

     */

private int totalRecord;

/**

     * 总共多少页

     */

private int totalPage;

/**

     * 放置具体数据的列表

     */

private List<E> datas;

public int getPageIndex() {

return pageIndex;

}

public void setPageIndex(int pageIndex) {

this.pageIndex = pageIndex;

}

public int getPageSize() {

return pageSize;

}

public void setPageSize(int pageSize) {

this.pageSize = pageSize;

}

public int getTotalRecord() {

return totalRecord;

}

public void setTotalRecord(int totalRecord) {

this.totalRecord = totalRecord;

}

public int getTotalPage() {

return totalPage;

}

public void setTotalPage(int totalPage) {

this.totalPage = totalPage;

}

public List<E> getDatas() {

return datas;

}

public void setDatas(List<E> datas) {

this.datas = datas;

}

public int getPageOffset() {

return pageOffset;

}

public void setPageOffset(int pageOffset) {

this.pageOffset = pageOffset;

}

}

接下来就是真正的分页了,  mybatis中mapper.xml配置文件中的两条查询语句如下

<!--多个参数的形式,需要使用map来存储-->

<select id="find" parameterType="map" resultType="User">

<!--只要是#{}这种形式的,都会以?形式替代,对应字符串形式,都会加上引号-->

<!--只要是${}这种形式的,不会用?形式替代,传过来什么,就什么替代-->

select * from t_user where

( username like #{name} or nickname like #{name} )

order by ${sort} ${order}

limit #{pageOffset},#{pageSize}

<!--

        对应的sql便是

        select * from t_user where (username like ? or nickname like ?)

            order by id desc limit ? ?

        -->

</select>

<select id="count" parameterType="map" resultType="int">

select count(*) from t_user where

( username like #{name} or nickname like #{name} )

</select>

java代码实现分页

/**

     * 分页显示

     */

public static Pager<User> testFind(String name){

int pageOffset=SystemContext.getPageOffset();

int pageSize=SystemContext.getPageSize();

String order=SystemContext.getOrder();

String sort=SystemContext.getSort();

Pager<User> pages=new Pager<User>();

SqlSession session=null;

try {

session = MyBatisUtil.createSession();

Map<String,Object> map=new HashMap<String,Object>();

//使用like模糊查询的时候,注意百分号加在这里

map.put("name", "%"+name+"%");

map.put("pageOffset", pageOffset);

map.put("pageSize", pageSize);

map.put("order", order);

map.put("sort", sort);

List<User> users=session.selectList(User.class.getName()+".find", map);

pages.setDatas(users);

pages.setPageOffset(pageOffset);

pages.setPageSize(pageSize);

int count=session.selectOne(User.class.getName()+".count", map);

pages.setTotalRecord(count);

//所有的数据都存到了Pager对象中

} finally{

MyBatisUtil.closeSession(session);

}

return pages;

}

测试上面分页代码

       SystemContext.setPageOffset(0);

SystemContext.setPageSize(15);

SystemContext.setOrder("desc");

SystemContext.setSort("id");

Pager<User> ps = testFind("zhang");

System.out.println(ps.getTotalRecord());

for(User u: ps.getDatas()){

System.out.println(u.getNickname());

}

时间: 2024-10-12 19:31:31

Mybatis-ThreadLocal分页的相关文章

Mybatis 的分页插件PageHelper-4.1.1的使用

Mybatis 的分页插件 PageHelper 项目地址:http://git.oschina.net/free/Mybatis_PageHelper 文档地址:http://git.oschina.net/free/Mybatis_PageHelper/blob/master/wikis/HowToUse.markdown 我用的版本是PageHelper-4.1.1.Mybatis-3.3.0 PageHelper 依赖于 jsqlparser-0.9.4.jar 使用方法: 1.根据My

springboot多数据源动态切换和自定义mybatis件分页插

1.配置多数据源 增加druid依赖 完整pom文件 数据源配置文件 route.datasource.driver-class-name= com.mysql.jdbc.Driver route.datasource.url= jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8 route.datasource.username= root route.datasource.password= 1234

mybatis常用分页插件,快速分页处理

在未分享整个查询分页的执行代码之前,先了解一下执行流程. 1.总体上是利用mybatis的插件拦截器,在sql执行之前拦截,为查询语句加上limit X X 2.用一个Page对象,贯穿整个执行流程,这个Page对象需要用java编写前端分页组件 3.用一套比较完整的三层entity,dao,service支持这个分页架构 4.这个分页用到的一些辅助类 注:分享的内容较多,这边的话我就不把需要的jar一一列举,大家使用这个分页功能的时候缺少什么就去晚上找什么jar包即可,尽可能用maven包导入

SpringBoot集成MyBatis的分页插件PageHelper

俗话说:好??不吃回头草,但是在这里我建议不管你是好马还是不好马,都来吃吃,带你复习一下分页插件PageHelper. 昨天给各位总结了本人学习springboot整合mybatis第一阶段的一些学习心得和源码,主要就算是敲了一下SpringBoot的门儿,希望能给各位的入门带给一点儿捷径,今天给各位温习一下MyBatis的分页插件PageHelper和SpringBoot的集成,它的使用也非常简单,开发更为高效.因为PageHelper插件是属于MyBatis框架的,所以相信很多哥们儿都已经用

SpringBoot集成MyBatis的分页插件PageHelper(回头草)

俗话说:好??不吃回头草,但是在这里我建议不管你是好马还是不好马,都来吃吃,带你复习一下分页插件PageHelper. 昨天给各位总结了本人学习springboot整合mybatis第一阶段的一些学习心得和源码,主要就算是敲了一下SpringBoot的门儿,希望能给各位的入门带给一点儿捷径,今天给各位温习一下MyBatis的分页插件PageHelper和SpringBoot的集成,它的使用也非常简单,开发更为高效.因为PageHelper插件是属于MyBatis框架的,所以相信很多哥们儿都已经用

Springside中使用MyBatis进行分页

最近在进行SpringSide框架来进行后台开发,又需要使用分页的功能,自己上网找了下资料,最终实现了SpringSide下使用MyBatis进行分页的功能,这里和大家分享一下,给予那些需要的人作为一个参考. 首先,我们需要一个拦截器,在src/main/java下面单独建一个包来存放,比如我的:com.soooft.report.interceptor,然后在里面新建一个拦截器的类,具体代码如下: package com.soooft.report.interceptor; import ja

Mybatis 的分页插件 PageHelper

我用的版本是PageHelper-4.1.1.Mybatis-3.3.0 PageHelper 依赖于 jsqlparser-0.9.4.jar 使用方法: 1.根据Mybatis的版本下载对应版本的PageHelper ( Mybatis最低版本不能低于3.3 ) 2.在Mybatis的配置文件 Mybatis-Configu.xml中配置PageHelper插件,配置示例: plugins插件的配置在 settings之后 在environments之前 settings中设置Mybatis

Spring Boot系列教程八: Mybatis使用分页插件PageHelper

一.前言 上篇博客中介绍了spring boot集成mybatis的方法,基于上篇文章这里主要介绍如何使用分页插件PageHelper.在MyBatis中提供了拦截器接口,我们可以使用PageHelp最为一个插件装入到SqlSessionFactory,实现拦截器功能. 二.实现 pom.xml文件中添加依赖包 1 <dependency> 2 <groupId>com.github.pagehelper</groupId> 3 <artifactId>pa

Spring Boot集成MyBatis与分页插件

Maven依赖: <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>4.1.6</version> </dependency> MybatisConfig.java: import java.util.Properties; import javax.sql.Dat

springmvc+mybatis 做分页sql 语句

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="ssmy.dao.UserDao"> <r