Mybatis + SpringMVC + Maven实现分页查询
使用Mybatis + Maven + SpringMVC 运行时,突然被需要分页查询的功能给难住了
这里推荐采用的插件是PageHelper这个插件,使用起来十分方便。该插件支持以下数据库:
1 2 3 4 5 6 7 8 9 10 | Oracle Mysql MariaDB SQLite Hsqldb PostgreSQL DB2 SqlServer( 2005 +) Informix H2 |
对应于github的项目地址:
https://github.com/pagehelper/Mybatis-PageHelper
关于使用建议猿友们可以详细阅读下这里的介绍:
http://git.oschina.net/free/Mybatis_PageHelper/blob/master/wikis/HowToUse.markdown
PageHelper的使用方法
1、引入依赖
在pom.xml文件添加如下依赖:
1 2 3 4 5 6 | <!-- mybatis分页插件依赖 --> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version> 4.0 . 0 </version> </dependency> |
3.2、在Mybatis配置xml中配置拦截器插件
在mybatis-config.xml文件中添加插件后的内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | <?xml version= "1.0" encoding= "UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd" > <configuration> <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= "false" /> <!-- 3.5 . 0 版本可用 - 为了支持startPage(Object params)方法 --> <!-- 增加了一个`params`参数来配置参数映射,用于从Map或ServletRequest中取值 --> <!-- 可以配置pageNum,pageSize,count,pageSizeZero,reasonable,不配置映射的用默认值 --> <!-- 不理解该含义的前提下,不要随便复制该配置 --> <property name= "params" value= "pageNum=start;pageSize=limit;" /> <!-- always总是返回PageInfo类型,check检查返回类型是否为PageInfo,none返回Page --> <property name= "returnPageInfo" value= "check" /> </plugin> </plugins> </configuration> |
哦,顺便提一下,SpringMVC 的配置文件
1 2 3 4 5 6 7 | <!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 --> <bean id= "sqlSessionFactory" class = "org.mybatis.spring.SqlSessionFactoryBean" > <property name= "dataSource" ref= "dataSource" /> <!-- 自动扫描mapping.xml文件 --> <property name= "mapperLocations" value= "classpath:org/hr/integrity/mapping/*.xml" ></property> <property name= "configLocation" value= "classpath:/mybatis-config.xml" ></property> </bean> |
3.3、mapper文件添加sql
在userMapper.xml文件里面添加sql:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <resultMap id= "BaseResultMap" type= "org.hr.integrity.bean.Users" > <id column= "user_id" property= "userId" jdbcType= "INTEGER" /> <result column= "user_name" property= "userName" jdbcType= "VARCHAR" /> <result column= "enterprise_name" property= "enterpriseName" jdbcType= "VARCHAR" /> <result column= "enterprise_email" property= "enterpriseEmail" jdbcType= "VARCHAR" /> <result column= "passwords" property= "passwords" jdbcType= "VARCHAR" /> <result column= "tel" property= "tel" jdbcType= "VARCHAR" /> <result column= "isapproval" property= "isapproval" jdbcType= "INTEGER" /> </resultMap> <sql id= "Base_Column_List" > user_id, user_name, enterprise_name, enterprise_email, passwords, tel, isapproval </sql> <select id= "selectUsersByIsapproval" resultMap= "BaseResultMap" parameterType= "java.lang.Integer" > select <include refid= "Base_Column_List" /> from users where isapproval = #{isapproval} </select> |
3.4、dao添加对用方法
UserDao.java添加如下方法:
1 | List<Users> selectUsersByIsapproval(Integer isapproval); |
3.5、service添加分页查询方法
UserService.java文件添加方法
1 2 3 4 5 6 7 8 9 10 11 12 | public PageInfo<Users> selectUsersByIsaByPage(Integer isapproval,Integer pageNo,Integer pageSize) { pageNo = pageNo == null ? 1 :pageNo; pageSize = pageSize == null ? 10 :pageSize; PageHelper.startPage(pageNo, pageSize); List<Users> list = userDao.selectUsersByIsapproval(isapproval); //用PageInfo对结果进行包装 PageInfo<Users> page = new PageInfo<Users>(list); //测试PageInfo全部属性 System.out.println(page.toString()); return page; } |
至于 Mybatis + Maven + SpringMVC 的框架怎么搭建,呵呵,这里不告诉你!
其他博客:http://blog.csdn.net/u013142781/article/details/50410243
原文地址:http://bbs.landingbj.com/t-0-298931-1.html
作者:panie
出处:http://www.cnblogs.com/panie2015/
如果您希望与我交流互动,欢迎加我微信
本文内容为作者辛苦整理书写,欢迎转载,但请保留文章出处
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?