MyBatis分页插件-PageHelper的配置与应用
来源:互联网 发布:centos 防止arp 编辑:程序博客网 时间:2024/06/05 12:06
- MyBatis分页插件PageHelper的配置与应用
- 一引入PageHelper依赖
- 二配置拦截器插件
- 三使用分页插件
- mapper接口 简单易懂
- mapperxml 框架已做好处理
- Service类 服务MV C
- JUnit 测试类
- 总结
在我看来,这个分页插件为mybatis量身定制。完美融合框架,一句多余的代码也不需要我们写.我们
MyBatis分页插件-PageHelper的配置与应用
一.引入PageHelper依赖
pom.xml 引入依赖:
<!-- pagehelper :分页插件 --><dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.1.2</version></dependency><!-- pagehelper的依赖包:jsqlparser --><dependency> <groupId>com.github.jsqlparser</groupId> <artifactId>jsqlparser</artifactId> <version>0.9.5</version></dependency>
*如果不用maven需要自行下载两个jar包:
- http://repo1.maven.org/maven2/com/github/pagehelper/pagehelper/
- http://repo1.maven.org/maven2/com/github/jsqlparser/jsqlparser/0.9.5/
二.配置拦截器插件
spring-mybatis.xml 集成配置:
<!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 --><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <!-- 自动扫描mapping.xml文件 --> <property name="mapperLocations" value="classpath:site/gaoyisheng/mapping/*.xml"></property> <!-- 分页插件 pagehelper --> <property name="plugins"> <array> <bean class="com.github.pagehelper.PageInterceptor"> <property name="properties"> <!--使用下面的方式配置参数,一行配置一个 --> <value> helperDialect=postgresql reasonable=true supportMethodsArguments=true params=count=countSql autoRuntimeDialect=true </value> </property> </bean> </array> </property></bean>
简单介绍其中参数,具体参数详见: 分页插件参数介绍
helperDialect:如果不配置,pagehelper会自动获取连接,检测数据库。也可以自己声明数据库的方言,比如此处用的postgresql。
reasonable:配置pageNum参数合理化,比如第0页,和超过最后一页,则返会第一页和最后一页。而不是意想不到的数据。
supportMethodsArguments:”支持通过 Mapper 接口参数来传递分页参数”,通过interface传给mapper.xml,默认false不支持.代码实例可见 例子:查询测试代码 , mapper.xml代码,查看详细的写法.展示了两种不同传值方法,
params=count=countSql 为了支持PageHelper.startPage(Object params)方法,默认值为pageNum=pageNum;pageSize=pageSize;count=countSql;reasonable=reasonable;pageSizeZero=pageSizeZero .
autoRuntimeDialect:运行时多数据源(数据库)自动识别,默认值false。true则允许自动识别对应方言的分页.
至此,我们已经配好一个简单可用的分页插件了.
三.使用分页插件
这里介绍其中一种方法,简单易懂.
1.mapper接口 简单易懂
最简单的使用方法是,通过mapper接口,传递分页参数:
public interface XXXmapper{ /** * . * TODO 按状态查询,+分页参数:重载 * @param status * @param pageNum * @param pageSize * @return */ List<EnPeriodicalThesis> selectByStatus(@Param("status") String status,@Param("pageNum") int pageNum,@Param("pageSize") int pageSize);}
pageNum: 控制页数.
pageSize: 控制页面大小.
2.mapper.xml 框架已做好处理
在mapper.xml中,并不需要我们处理任何参数.{“pageNum”,”pageSize”} Mybatis框架会自动查找对应分页的数据然后返回.
<!-- 根据 认领状态 查询 --><select id="selectByStatus" resultMap="BaseResultMap"> select <include refid="Base_Column_List" /> from en_periodical_thesis e where e.claim_status = #{status}</select>
不管你信不信,有了框架它就是这么方便.已经可以用了.我们再写个Service类和测试类跑跑看.
3. Service类 服务MV C
/** * . * TODO 通过认领状态查询,+分页参数:重载 * @param status * @param pageNum * @param pageSize * @return */ public List<EnPeriodicalThesis> selectByStatus(String claimStatus,int pageNum,int pageSize) { return thesisDao.selectByStatus(claimStatus,pageNum,pageSize); }
3.JUnit 测试类
@Testpublic void selectTest() { List<EnPeriodicalThesis> enList = es.selectByStatus("未认领",1,2); for (EnPeriodicalThesis e : enList) { System.out.println("---" + e.toString()); }}
查询结果:
- 查询状态”未认领”
- 第1页
- 每页2条数据
DEBUG - ==> Preparing: SELECT count(0) FROM en_periodical_thesis e WHERE e.claim_status = ? DEBUG - ==> Parameters: 未认领(String)DEBUG - <== Total: 1DEBUG - ==> Preparing: select id, key_id, name, all_auther_name, provenance, "subject ", volume, period, page, year, claim_status from en_periodical_thesis e where e.claim_status = ? LIMIT ? DEBUG - ==> Parameters: 未认领(String), 2(Integer)DEBUG - <== Total: 2---EnPeriodicalThesis [id=1, keyId=, name=test1, allAutherName=, provenance=, subject=, volume=, period=, page=, year=, claimStatus=未认领]---EnPeriodicalThesis [id=2, keyId=, name=test2, allAutherName=, provenance=, subject=, volume=, period=, page=, year=, claimStatus=未认领]
总结:
好用,简单易上手.
参考资料:
https://pagehelper.github.io/
https://pagehelper.github.io/docs/howtouse/#1-%E5%BC%95%E5%85%A5%E5%88%86%E9%A1%B5%E6%8F%92%E4%BB%B6
源码见:
- https://github.com/pagehelper/Mybatis-PageHelper
- https://github.com/abel533/Mybatis-Spring
个人项目源码路径:欢迎交流指教.
- https://github.com/timo1160139211/trans
本文链接:欢迎交流指教.
- http://blog.csdn.net/timo1160139211/article/details/78632831
- MyBatis分页插件-PageHelper的配置与应用
- MyBatis分页插件-PageHelper的配置与应用(二):即插即用的PageInfo<T>
- springboot+mybatis分页插件pageHelper的配置与使用
- mybatis的分页插件pageHelper
- pagehelper mybatis的分页插件
- mybatis的分页插件pageHelper
- 【MyBatis】MyBatis分页插件PageHelper的使用
- 【MyBatis】MyBatis分页插件PageHelper的使用
- 【MyBatis】MyBatis分页插件PageHelper的使用
- MyBatis分页插件PageHelper
- mybatis分页插件pagehelper
- Mybatis分页插件-pagehelper
- Mybatis分页插件 - PageHelper
- Mybatis分页插件PageHelper
- Mybatis分页插件PageHelper
- MyBatis分页插件PageHelper
- mybatis插件分页PageHelper
- Mybatis分页插件PageHelper
- Android:dagger2详解 2
- MYSQL——存储过程
- algo_KNN(k-nearest neighbor)
- Project interpreter not specified(eclipse+pydev)
- classloader memory leak
- MyBatis分页插件-PageHelper的配置与应用
- 使用栈实现二叉树的深拷贝
- 总结一下CSS中的定位 Position 属性
- 工作小感悟
- Pat 打印沙漏(20)
- echarts散点图整理
- Ecshop实现注册页面手机号唯一的验证
- strtok、strtok_s、strtok_r 字符串分割函数
- oracle添加dblink