Mybatis分页

来源:互联网 发布:重庆seo服务 编辑:程序博客网 时间:2024/06/04 19:04

Mybatis分页

身为一个java程序员,我的前十几篇的blog居然都是关于js的,所以我决定聊聊java。最近在做毕业设计,由于我的
毕设导师他们的实验室一直是使用PostgreSQL的,那个和mysql一样也是免费的数据库,而且还自带管理端,用起来很方便
。但是我在实习工作的时候一直是使用mysql的,关于分页的事就麻烦了。
每个数据库关于sql的语法都有点不同。刚开始在网上找到 paginator项目
大家都很推荐这个,我觉得他应该是很不错的,但是在整合的时候,运行出现sql语法错误,说明他不适合PostgreSQL,但是可以修改源码解决。
但是我只是想找个解决办法,终于 Mybatis_PageHelper解决了问题。

Mybatis_PageHelper很好用,而且他的兼容性好,Oracle、Mysql、MariaDB、SQLite、Hsqldb、PostgreSQL、DB2、SqlServer(2005,2008)、Informix、H2、SqlServer2012。
这基本就包括了所有的数据库了。下面说说配置。
他的maven坐标:

<dependency>    <groupId>com.github.pagehelper</groupId>    <artifactId>pagehelper</artifactId>    <version>4.1.3</version></dependency>

他还使用了jsqlparser.jar这个jar包也要引进来。

重要的是配置一个Mybatis插件,在Mybatis的xml配置文件中,或者是通过spring的属性配置都可以,但是不要一起使用,
会发生错误。

<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          </value>        </property>      </bean>    </array>  </property></bean>

我没有细看到底配置是有什么用,但是记住修改dialect为你使用的数据库,官方说在也可以不指定,他会自动识别。
我觉得还是配置为好。
使用时有两种调用方法,我使用的第二种:

    PageHelper.startPage(1, 10);    List<Country> list = countryMapper.selectIf(1);

在你需要进行分页的Mybatis方法前调用PageHelper.startPage静态方法即可,紧跟在这个方法后的第一个Mybatis查询方法会被进行分页。但是我觉得已经足够使用了。

我的java代码是这么写的 service中:

    public List<Task> findList(int pageNumber,int pageSize) {        TaskExample example = new TaskExample();        PageHelper.startPage(pageNumber, pageSize);        List<Task> tasks = taskMapper.selectByExample(example);        return tasks;    }

controller

public Map<String, Object> queryTaskList(int page, int rows) {        List<Task> tasks = taskService.findList(page, rows);        PageInfo<Task> taskPage = new PageInfo<Task>(tasks);        Map<String, Object> result = new HashMap<String, Object>();        result.put("total", taskPage.getTotal());        result.put("rows", tasks);        return result;    }

分页中一般需要知道total,就可以使用PageInfo page = new PageInfo(list);pageinfo可以获取他的一些分页信息,很是方便。
有什么问题可以和加qq1357197829我一起讨论,共同进步。也可以到我的个人博客http://github.lushunming.top/查看。

0 0