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坐标:
1 | <dependency> |
他还使用了jsqlparser.jar这个jar包也要引进来。
重要的是配置一个Mybatis插件,在Mybatis的xml配置文件中,或者是通过spring的属性配置都可以,但是不要一起使用,
会发生错误。
1 | <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> |
我没有细看到底配置是有什么用,但是记住修改dialect为你使用的数据库,官方说在也可以不指定,他会自动识别。
我觉得还是配置为好。
使用时有两种调用方法,我使用的第二种:
1 | PageHelper.startPage(1, 10); |
在你需要进行分页的Mybatis方法前调用PageHelper.startPage静态方法即可,紧跟在这个方法后的第一个Mybatis查询方法会被进行分页。但是我觉得已经足够使用了。
我的java代码是这么写的 service中:
1 | public List<Task> findList(int pageNumber,int pageSize) { |
controller
1 | public Map<String, Object> queryTaskList(int page, int rows) { |
分页中一般需要知道total,就可以使用PageInfo page = new PageInfo(list);pageinfo可以获取他的一些分页信息,很是方便。
有什么问题可以和加qq1357197829我一起讨论,共同进步。也可以到我的个人博客查看。