Mybatis分页

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/查看。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

machineShunMing

谢谢老板

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值