`
zhaoshijie
  • 浏览: 2242528 次
  • 性别: 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分页插件,非入侵式,支持mysql,orcale,sqlserver,支持其他数据库拓展

    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-paginator插件

    NULL 博文链接:https://wang-ping001.iteye.com/blog/1918031

    Mybatis分页插件 PageHelper5.0.0 使用

    mybatis 分页插件 PageHelper5.0.0 mybatis 最简单的方式实现物理分页

    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

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

    SSM使用mybatis分页插件pagehepler实现分页示例

    本篇文章主要介绍了SSM使用mybatis分页插件pagehepler实现分页示例,使用分页插件的原因,简化了sql代码的写法,实现较好的物理分页,非常具有实用价值,需要的朋友可以参考下

    支持mysql物理分页的 MyBatis Generator 1.3.2

    myeclipse 2013 插件MyBatis Generator 1.3.2生成的代码缺少分页,使用麻烦。修改了源码org.mybatis.generator.core_1.3.2.201207161521.jar包,增加了PaginationPlugin和SelectOneByExamplePlugin两个扩展插件。...

    mybatis自动映射、sql构建、物理分页的插件

    mybatis自动映射、sql构建、物理分页的插件 此项目演示了mybatis-spring-sqlbuilder2.1.2.jar插件的使用 对此插件有兴趣的可以通过邮箱karkaw@163.com和我交流

    MyBatis-PageHelper:mybatis分页学习

    #Mybatis分页插件 - PageHelper 如果你也在用Mybatis,建议尝试该分页插件,这一定是最方便使用的分页插件。 分页插件支持任何复杂的单表、多表分页,部分特殊情况请看。 想要使用分页插件?请看。 ##物理分页 该...

    Mybatis-PageHelper:Mybatis通用分页插件

    MyBatis分页-PageHelper如果您使用的是MyBatis,建议尝试使用此分页插件。 这必须是最方便的分页插件。 PageHelper支持任何复杂的单表,多表查询。 关于某些特殊情况,请参阅。 要使用PageHelper吗? 请查看 。新的...

    mybatis分页共享

    mybatis分页共享,本资源基于插件机制,通过拦截StatementHandler重写sql语句,实现数据库的物理分页。基于mybatis3.2.2开发,使用时注意版本。

    mybatis分页插件

    这是已经修改过的分页插件,网上下载的有bug,我的已经修改过了,请放心使用

    spingMVC+mybatis+hessian+activeMQ+redis

    完美整合spingMVC+mybatis+hessian+activeMQ+redis,引入mybatis物理分页插件,模拟cookie登陆的工具类。

    mybatis3 物理分页源代码

    Mybaits的拦截器实现Interceptor接口。通过拦截StatementHandler的prepare方法的分页插件类,代码实现oralce和mysql数据库。只有加以修改可以实现任意数据库。

    Mybatis分页插件,支持任何复杂的单表、多表分页,含详细使用文档

    该插件目前支持以下数据库的物理分页: Oracle Mysql MariaDB SQLite Hsqldb PostgreSQL DB2 SqlServer(2005+) Informix

    Android+Java后端(Springboot+Mybatis)小商店项目源码+数据库+项目说明.zip

    Android+Java后端(Springboot+Mybatis)小商店项目源码+数据库+项目说明.zip 主要实现一个商城的下单、购物车、支付等基本功能,熟悉后端的开发过程,因为自己做...PageHelper MyBatis物理分页插件 Redis 分布式缓存

    mybatis分页源码

    Mybatis的分页功能很弱,它是基于内存的分页(查出所有记录再按偏移量和limit取结果),...本资源基于插件机制,通过拦截StatementHandler重写sql语句,实现数据库的物理分页。基于mybatis3.2.2开发,使用时注意版本。

Global site tag (gtag.js) - Google Analytics