Mybatis分页插件美高梅娱乐场网站

发布时间:2019-10-06  栏目:计算机教程  评论:0 Comments

SSM+PageHelper 使用,ssmpagehelper使用

项目中使用了maven

  1 引入jar包

  首先需要引入PageHelper的jar包。 

  如果使用了maven,那么只要在pom.xml中引入该插件即可,引入如下:

  <dependency>``

<groupId>com.github.pagehelper</groupId>

*`     `*`<artifactId>pagehelper`

<version>4.1.4</version>

   </dependency>
   一定要注意:版本号不能太低,最开始用3点几的时候,报500的错误,不能正确分页。
2.  在sqlMapConfig.xml中配置:
  1. <!– 配置分页插件 –>  
  2. <plugins>  
  3.     <plugin interceptor=”com.github.pagehelper.PageHelper”>  
  4.         <!– 设置数据库类型 Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL六种数据库–>          
  5.         <property name=”dialect” value=”mysql”/>  
  6. 美高梅娱乐场网站,           <!– 该参数默认为false –>    
  7.            <!– 设置为true时,会将RowBounds第一个参数offset当成pageNum页码使用 –>    
  8.            <!– 和startPage中的pageNum效果一样–>    
  9.            <property name=”offsetAsPageNum” value=”true”/>    
  10.            <!– 该参数默认为false –>   
  11.            <!– 设置为true时,使用RowBounds分页会进行count查询 –>    
  12.            <property name=”rowBoundsWithCount” value=”true”/>    
  13.            <!– 3.3.0版本可用 – 分页参数合理化,默认false禁用 –>    
  14.            <!– 启用合理化时,如果pageNum<1会查询第一页,如果pageNum>pages会查询最后一页 –>    
  15.            <!– 禁用合理化时,如果pageNum<1或pageNum>pages会返回空数据 –>    
  16.            <property name=”reasonable” value=”true”/>    
  17.            <!– 支持通过Mapper接口参数来传递分页参数 –>    
  18.            <property name=”supportMethodsArguments” value=”true”/>    
  19.            <!– always总是返回PageInfo类型,check检查返回类型是否为PageInfo,none返回Page –>    
  20.            <property name=”returnPageInfo” value=”check”/>    
  21.     </plugin>  
  22. </plugins>  

3 serviceImpl 中接收从mapper.xml中查到的结果,运用pagehelper分页
  example:   

         public TbResult getArticleByType(String type,int pageNumber,
int pageSize) {
                       TbArticleExample example = new
TbArticleExample(); 
                       Criteria criteria = example.createCriteria();
                       criteria.andTypeEqualTo(type);
                       PageHelper.startPage(pageNumber, pageSize);
                       List<TbArticle> art =
articleMapper.selectByExampleWithBLOBs(example);
                       PageInfo<TbArticle> pageInfo = new
PageInfo<>(art);
                       TbResult result =new TbResult();
                       result.setRows(art);
                       result.setTotal(pageInfo.getTotal());
                       return result;
         }

       
 可以看出 PageHelper.startPage(pageNumber, pageSize);是在执行sql前出现,
PageInfo
其实是已经分完的结果,我这里是把结果又分装到了一个TbResult类中,后来发现不需要这么写。pageInfo.getList()就是art
,所以其实直接返回pageInfo就行。

4  在Controller层接收结果就可以了

http://www.bkjia.com/Javabc/1306068.htmlwww.bkjia.comtruehttp://www.bkjia.com/Javabc/1306068.htmlTechArticleSSM+PageHelper 使用,ssmpagehelper使用
项目中使用了maven 1 引入jar包 首先需要引入PageHelper的jar包。
如果使用了maven,那么只要在pom.xml中引入该插…

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

<!–

    plugins在配置文件中的位置必须符合要求,否则会报错,顺序如下:

    properties?, settings?,

    typeAliases?, typeHandlers?,

    objectFactory?,objectWrapperFactory?,

    plugins?,

    environments?, databaseIdProvider?, mappers?

–>

<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=”true”/>

    </plugin>

</plugins>

这里的com.github.pagehelper.PageHelper使用完整的类路径。

其他五个参数说明:

  1. 增加dialect属性,使用时必须指定该属性,可选值为oracle,mysql,mariadb,sqlite,hsqldb,postgresql,没有默认值,必须指定该属性
  2. 增加offsetAsPageNum属性,默认值为false,使用默认值时不需要增加该配置,需要设为true时,需要配置该参数。当该参数设置为true时,使用RowBounds分页时,会将offset参数当成pageNum使用,可以用页码和页面大小两个参数进行分页。
  3. 增加rowBoundsWithCount属性,默认值为false,使用默认值时不需要增加该配置,需要设为true时,需要配置该参数。当该参数设置为true时,使用RowBounds分页会进行count查询。
  4. 增加pageSizeZero属性,默认值为false,使用默认值时不需要增加该配置,需要设为true时,需要配置该参数。当该参数设置为true时,如果pageSize=0或者RowBounds.limit = 0就会查询出全部的结果(相当于没有执行分页查询,但是返回结果仍然是Page类型)。
  5. 增加reasonable属性,默认值为false,使用默认值时不需要增加该配置,需要设为true时,需要配置该参数。具体作用请看上面配置文件中的注释内容。

3.1. 引入分页插件

引入分页插件一共有下面3种方式,推荐使用引入分页代码的方式,这种方式易于控制,并且可以根据自己需求进行修改。

3.1.2. 引入Jar包

如果你想使用本项目的jar包而不是直接引入类,你可以在这里下载各个版本的jar包(点击Download下的jar即可下载)

由于使用了sql解析工具,你还需要下载这个文件(这个文件完全独立,不依赖其他):

 

3.4.3. 例三,使用PageInfo的用法:

//获取第1页,10条内容,默认查询总数count

PageHelper.startPage(1, 10);

List<Country> list = countryMapper.selectAll();

//用PageInfo对结果进行包装

PageInfo page = new PageInfo(list);

//测试PageInfo全部属性

//PageInfo包含了非常全面的分页属性

assertEquals(1, page.getPageNum());

assertEquals(10, page.getPageSize());

assertEquals(1, page.getStartRow());

assertEquals(10, page.getEndRow());

assertEquals(183, page.getTotal());

assertEquals(19, page.getPages());

assertEquals(1, page.getFirstPage());

assertEquals(8, page.getLastPage());

assertEquals(true, page.isFirstPage());

assertEquals(false, page.isLastPage());

assertEquals(false, page.isHasPreviousPage());

assertEquals(true, page.isHasNextPage());

本项目中包含大量测试,您可以通过查看测试代码了解使用方法。

测试代码地址:http://git.oschina.net/free/Mybatis\_PageHelper/tree/master/src/test/java/com/github/pagehelper/test

 

3.4. 如何在代码中使用

阅读前后请注意看重要提示

首先该分页插件支持以下两种调用方式:

//第一种,RowBounds方式的调用

List<Country> list = sqlSession.selectList(“x.y.selectIf”, null,
new RowBounds(1, 10));

 

//第二种,Mapper接口方式的调用,推荐这种使用方式。

PageHelper.startPage(1, 10);

List<Country> list = countryMapper.selectIf(1);

下面分别对这两种方式进行详细介绍

5. 相关链接

对应于oschub的项目地址:http://git.oschina.net/free/Mybatis\_PageHelper

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

Mybatis-Sample(分页插件测试项目):http://git.oschina.net/free/Mybatis-Sample

Mybatis项目:https://github.com/mybatis/mybatis-3

Mybatis文档:http://mybatis.github.io/mybatis-3/zh/index.html

Mybatis专栏:

作者博客:

作者QQ: 120807756

作者邮箱: abel533@gmail.com

Mybatis工具群: 211286137 (Mybatis相关工具插件等等)

 

如果你也在用Mybatis,建议尝试该分页插件,这个一定是最方便使用的分页插件。

3.1.1. 引入分页代码

将本插件中的com.github.pagehelper包(点击进入gitosc包 | 点击进入github包)下面的三个类Page,PageHelper和SqlUtil放到项目中,如果需要使用PageInfo(强大的分页包装类),也可以放到项目中。如果想使用更高效的count查询,你也可以将SqlParser放到SqlUtil相同的包下,使用SqlParser时必须使用jsqlparser-0.9.1.jar。

2.3. 版本3.4.0

3.2.1.1. 场景一

如果你仍然在用类似ibatis式的命名空间调用方式,你也许会用到rowBoundsWithCount,分页插件对RowBounds支持和Mybatis默认的方式是一致,默认情况下不会进行count查询,如果你想在分页查询时进行count查询,以及使用更强大的PageInfo类,你需要设置该参数为true。

3.2.1.3. 场景三

如果觉得某个地方使用分页后,你仍然想通过控制参数查询全部的结果,你可以配置pageSizeZero为true,配置后,如可以通过设置pageSize=0或者RowBounds.limit = 0就会查询出全部的结果。

3.4.2.1. 例一:

SqlSession sqlSession = MybatisHelper.getSqlSession();

CountryMapper countryMapper = sqlSession.getMapper(CountryMapper.class);

try {

    //获取第1页,10条内容,默认查询总数count

    PageHelper.startPage(1, 10);

 

    //紧跟着的第一个select方法会被分页

    List<Country> list = countryMapper.selectIf(1);

    assertEquals(2, list.get(0).getId());

    assertEquals(10, list.size());

    //分页时,实际返回的结果list类型是Page<E>,如果想取出分页信息,需要强制转换为Page<E>,

    //或者使用PageInfo类(下面的例子有介绍)

    assertEquals(182, ((Page) list).getTotal());

} finally {

    sqlSession.close();

}

3.2.1.4. 场景四

如果你分页插件使用于类似分页查看列表式的数据,如新闻列表,软件列表,你希望用户输入的页数不在合法范围(第一页到最后一页之外)时能够正确的响应到正确的结果页面,那么你可以配置reasonable为true,这时如果pageNum<1会查询第一页,如果pageNum>总页数会查询最后一页。

4.2. 分页插件不支持带有for update语句的分页

对于带有for update的sql,会抛出运行时异常,对于这样的sql建议手动分页,毕竟这样的sql需要重视。

 

3.3.2. 使用spring的属性配置方式

使用spring的属性配置方式,可以使用plugins属性像下面这样配置:

<bean id=”sqlSessionFactory” class=”org.mybatis.spring.SqlSessionFactoryBean”>

  <property name=”dataSource” ref=”dataSource”/>

  <property name=”mapperLocations”>

    <array>

      <value>classpath:mapper/*.xml</value>

    </array>

  </property>

  <property name=”typeAliasesPackage” value=”com.isea533.ssm.model”/>

  <property name=”plugins”>

    <array>

      <bean class=”com.github.pagehelper.PageHelper”>

        <property name=”properties”>

          <value>

            dialect=hsqldb

            reasonable=true

          </value>

        </property>

      </bean>

    </array>

  </property>

</bean>

属性配置按照上面的方式配置,每个配置独立一行即可。

4.1. PageHelper.startPage方法重要提示

只有紧跟在PageHelper.startPage方法后的第一个Mybatis的查询(Select方法)方法会被分页。

 

3.3. Spring配置方法

首先需要在Spring中配置org.mybatis.spring.SqlSessionFactoryBean。然后配置配置Mybatis的具体配置有两种方式,一种是用mybatis默认的xml配置,另一种就是完全使用spring的属性配置方式。

留下评论

网站地图xml地图