`
zhaoshijie
  • 浏览: 2265429 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Mybatis物理分页插件(目前mybatis下最好的物理分页)

 
阅读更多
关键字:Mybatis物理分页插件(目前mybatis下最好的物理分页)

使用方式:http://my.oschina.net/miemiedev/blog/135516
项目git地址:https://github.com/miemiedev/mybatis-paginator

miemiedev还提供了一系列针对mybatis的插件,项目首页:https://github.com/miemiedev

简单示例:

在Maven中加入依赖:


<dependencies>
  ...
    <dependency>
        <groupId>com.github.miemiedev</groupId>
        <artifactId>mybatis-paginator</artifactId>
        <version>1.2.15</version>
    </dependency>
...
</dependencies>


Mybatis配置文件添加分页插件:


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
        PUBLIC "-//ibatis.apache.org//DTD Config 3.0//EN"
        "http://ibatis.apache.org/dtd/ibatis-3-config.dtd">
<configuration>
    <plugins>
        <plugin interceptor="com.github.miemiedev.mybatis.paginator.OffsetLimitInterceptor">
            <property name="dialectClass" value="com.github.miemiedev.mybatis.paginator.dialect.OracleDialect"/>
        </plugin>
    </plugins>
</configuration>

注:如果使用mybatis-spring来整合mybatis,也可以这样配置(主要是加载分页插件)


<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="configLocation" value="classpath:/mybatis/mybatis-config.xml"></property>
<property name="dataSource" ref="dataSource" />
<property name="mapperLocations">
<list>
<value>classpath*:/mybatis/common/*-*.xml</value>
<value>classpath*:/mybatis/${jdbc.dialect}/*-*.xml</value>
</list>
</property>
<property name="plugins">
<list>
<bean class="com.github.miemiedev.mybatis.paginator.OffsetLimitInterceptor">
<property name="dialectClass" value="com.github.miemiedev.mybatis.paginator.dialect.MySQLDialect"></property>
</bean>

</list>

</property>
</bean>



创建一个查询,内容可以是任何Mybatis表达式,包括foreach和if等:


<select id="findByCity" resultType="map">
    select * from TEST_USER where city = #{city};
</select>


Dao中的方法或许是这样(用接口也是类似):



public List findByCity(String city, PageBounds pageBounds){

    Map<String, Object> params = new HashMap<String, Object>();
    params.put("city",city);

    return getSqlSession().selectList("db.table.user.findByCity", params, pageBounds);
}


调用方式(分页加多列排序):


int page = 1; //页号
int pageSize = 20; //每页数据条数
String sortString = "age.asc,gender.desc";//如果你想排序的话逗号分隔可以排序多列
PageBounds pageBounds = new PageBounds(page, pageSize , Order.formString(sortString));
List list = findByCity("BeiJing",pageBounds);

//获得结果集条总数
PageList pageList = (PageList)list;
System.out.println("totalCount: " + pageList.getPaginator().getTotalCount());

PageList类是继承于ArrayList的,这样Dao中就不用为了专门分页再多写一个方法。

使用PageBounds这个对象来控制结果的输出,常用的使用方式一般都可以通过构造函数来配置。



new PageBounds();//默认构造函数不提供分页,返回ArrayList
new PageBounds(int limit);//取TOPN操作,返回ArrayList
new PageBounds(Order... order);//只排序不分页,返回ArrayList

new PageBounds(int page, int limit);//默认分页,返回PageList
new PageBounds(int page, int limit, Order... order);//分页加排序,返回PageList
new PageBounds(int page, int limit, List<Order> orders, boolean containsTotalCount);//使用containsTotalCount来决定查不查询totalCount,即返回ArrayList还是PageList

分享到:
评论
3 楼 abcd2745 2016-03-25  

    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="mapperLocations" value="classpath:config/mapper/**/*.xml"/>
        <property name="plugins">
            <list>
                <bean class="com.github.miemiedev.mybatis.paginator.OffsetLimitInterceptor">
                    <property name="dialectClass" value="com.github.miemiedev.mybatis.paginator.dialect.MySQLDialect"></property>
                </bean>
            </list>
        </property>
    </bean>

楼主, nested exception is java.lang.NoClassDefFoundError: Could not initialize class com.github.miemiedev.mybatis.paginator.OffsetLimitInterceptor
根据配置,一直报错,不能初始化OffsetLimitInterceptor这个类。。求大神指导
2 楼 voven2000 2016-03-15  
dao代码在哪里?
1 楼 yuchao86 2015-12-04  
你好,用接口怎么实现呢?

相关推荐

    mybatis物理分页插件

    而“mybatis物理分页插件”是针对MyBatis设计的一个扩展,用于解决在大数据量查询时的性能问题,通过实现物理分页来避免内存溢出。 物理分页是指在数据库层面进行分页,相比于逻辑分页(在应用层进行数据截取),...

    spring+mybatis实现了物理分页

    3. **分页插件**:PageHelper是常用的MyBatis分页插件,它能自动处理物理分页。在项目的pom.xml中引入PageHelper依赖,然后在MyBatis的配置文件中启用插件,并设置相关属性,如dialect(数据库类型)。 4. **Spring...

    mybatis 物理分页,借助于mybatis-paginator插件

    这个插件专门为MyBatis设计,旨在提供高性能的物理分页解决方案。 首先,物理分页与逻辑分页的区别在于,物理分页直接在数据库层面进行,通过SQL语句的LIMIT和OFFSET或者ROWNUM等关键字来限制返回的数据量,避免了...

    mybatis物理分页插件--GbatisDialect

    自己写的一个mybatis物理分页插件,支持mysql,oracle,db2,ms sql server2005-2008和ms sql server2012, 由于sql server2005的分页比较独特, 暂时只支持单order by 的情况, 多个order by会报错 , mysql,oracle,db2完美...

    mybatis物理分页插件-GbatisDialect

    &lt;... PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"&gt; &lt;!-- value="mssql|oracle|mysql|db2" --&gt; &lt;/configuration&gt;

    mybatis分页插件源码

    MyBatis 分页插件是 MyBatis 框架中的一个重要组件,它允许开发者在进行数据查询时实现高效的分页功能,而无需修改原有的 SQL 查询语句或 DAO 层代码,因此被称为“非入侵式”。这个插件的源码分析可以帮助我们深入...

    mybatis不改源码实现物理分页

    标题中的“mybatis不改源码实现物理分页”指的是在使用MyBatis这个流行的Java持久层框架时,如何在不修改MyBatis核心源码的情况下实现数据库的物理分页功能。物理分页是直接在数据库层面进行分页查询,通常更高效,...

    Mybatis分页插件 PageHelper5.0.0 使用

    Mybatis 分页插件 PageHelper5.0.0 是一个功能强大且易于使用的分页插件,它可以帮助开发者快速实现 Mybatis 的物理分页操作。下面是使用 PageHelper5.0.0 实现分页的详细教程: 一、添加依赖 首先,在 pom.xml ...

    Mybatis PageHelper分页插件-其他

    该插件目前支持以下数据库的物理分页: 1、Oracle 2、Mysql 3、MariaDB 4、SQLite 5、Hsqldb 6、PostgreSQL 7、DB2 8、SqlServer(2005+) 9、Informix 10、H2 11、SqlServer2012 12、Derby 13、Phoenix 14、达梦...

    MyBatis 分页插件PageHelper Demo

    【MyBatis PageHelper分页插件Demo详解】 在Java Web开发中,数据查询往往涉及到大量的数据量,这时分页查询就显得尤为重要。MyBatis PageHelper插件是一款专为MyBatis设计的高效分页插件,它可以无缝对接Spring ...

    MyBatis 分页

    MyBatis的物理分页插件如MyBatis-Plus或PageHelper可以提供这样的功能。只需一行代码,就可以实现对SQL Server 2005、2008,Oracle和MySQL等数据库的分页支持。 例如,在使用PageHelper插件时,你可以在Mapper接口...

    Mybatis PageHelper(Mybatis分页插件) v5.0 最新免费版.rar

    Mybatis PageHelper是一款针对Mybatis框架的高效分页插件,它极大地简化了在Mybatis中实现分页查询的复杂性。PageHelper插件通过自动处理SQL语句,实现了数据库的兼容性,支持多种主流数据库如MySQL、Oracle、DB2等...

    IDEA: spring+mybatis+springMVC SSM框架(三) spring 整合 Mybatis 以及分页插件 PageHelper

    在本项目中,我们主要探讨的是如何在IntelliJ IDEA(IDEA)环境下,整合Spring、Mybatis和SpringMVC(SSM)框架,并利用PageHelper分页插件实现高效的数据分页。以下是对这些技术及其整合过程的详细说明: 1. **...

    pagehelper-fix/pagehelper 淘淘商城MyBatis分页插件

    【标题】"pagehelper-fix/pagehelper 淘淘商城MyBatis分页插件" 描述了一个特定的应用场景,即在淘淘商城项目中使用了PageHelper分页插件来优化MyBatis的数据库查询操作。PageHelper是针对MyBatis的一个强大而灵活的...

    mybatis分页插件PageHelper

    com.github.pagehelper.PageHelper是一款好用的开源免费的Mybatis第三方物理分页插件。

    Spring+mybatis+PageHelper分页插件

    在本项目中,"Spring+mybatis+PageHelper分页插件"的组合是一个常见的Java后端开发架构,用于构建高效、便捷的数据分页功能。下面将详细解释这些技术及其结合方式。 首先,Spring是一个开源的Java应用框架,它提供...

    MyBatis拦截器分页与动态修改SQL及其参数值

    一种是使用自定义的拦截器,例如PaginationInterceptor.java,它可以在执行SQL前自动添加LIMIT和OFFSET子句,实现物理分页。另一种方式是通过Mapper接口和Page对象,比如PagingByCount.java和PagingByExampl.java,...

    mybatis分页插件

    分页插件通过拦截Mybatis的`StatementHandler`接口来实现数据库层面的物理分页。当执行SQL查询时,`StatementHandler`负责解析和准备SQL语句。拦截这个阶段,我们可以动态修改SQL语句,添加分页相关的SQL片段,从而...

    mybatis分页配置

    1. **基于插件的分页**:MyBatis 提供了一个 PageHelper 插件,它可以方便地实现物理分页。首先,你需要在 Maven 或 Gradle 的依赖中添加 PageHelper 的依赖,然后在 MyBatis 的配置文件中启用该插件。PageHelper ...

Global site tag (gtag.js) - Google Analytics