近两天一直再研究MyBatis的分页问题,看了别人的处理方式,自己总结优化了一下,写了两个拦截类,给有需要的人使用和参考,源码请下载附件。
主要有3个类:Page,MybatisPageInterceptor,MybatisSpringPageInterceptor
Page:作为分页对象,有:pageNo、pageSize、totalRecord、totalPage、results属性
MybatisPageInterceptor和MybatisSpringPageInterceptor:
均为拦截类,仅需要选用其中的一个,前者在任何情况下都可用,后再仅在Spring环境下使用。
推荐使用后者,其优点是使用后无需对mapper的XML文件作任何修改,只需要修改Mapper类的方法,增加一个Page类型的参数即可。而前者使用时有可能会需要修改XML,特别是原Mapper方法只有一个参数时,需要增加@Param指定参数名,而后修改XML文件使用该参数名。
以下给出在Spring环境下的配置使用方法示例:
MybatisSpringPageInterceptor:
修改Spring配置文件
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="configLocation" value="classpath:mybatis/mybatis.config.xml"/> <property name="typeAliasesPackage" value="com.xjd.springmybatis.model" /> <property name="plugins"> <bean class="com.xjd.springmybatis.mybatispage.MybatisSpringPageInterceptor"> </bean> </property> </bean>
修改Mapper方法:
public List<User> getByName(String username);
为
public List<User> getByName(String username, Page page);
Ok, 即可使用了。
MybatisPageInterceptor:
修改spring配置文件
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="configLocation" value="classpath:mybatis/mybatis.config.xml"/> <property name="typeAliasesPackage" value="com.xjd.springmybatis.model" /> <property name="plugins"> <bean class="com.xjd.springmybatis.mybatispage.MybatisPageInterceptor"> </bean> </property> </bean>
修改Mapper方法:
public List<User> getByName(String username);
为
public List<User> getByName(@Param("user") String username, Page page);
必要时修改mapper的xml文件:
<select id="getByName" parameterType="map" resultMap="user_map" > select <include refid="user_columns"/>, <include refid="addr_columns"/> from user u left join address addr on u.id = addr.user_id where u.username = #{user} </select>
Ok, 即可使用了。
使用方式:
Page<User> page = new Page<User>(); page.setPageNo(1); page.setPageSize(20); List<User> users = mapper.getByName("xjd", page); System.out.println(page); //users == page.getResults()
注意:目前只支持MySQL和Oracle,其它数据库请自行修改代码。
相关推荐
自己最近搭建的一个SpringMVC+Mybatis的框架 属于无实体类的框架 ... 并实现了Myabtis的自动分页和总数查询 只要传入分页参数便能自动查询总数和分页 总数封装在参数里面执行查询后可以直接从参数中获取
本插件针对mybatis分页查询而编写,在mybatis3.2.7版本测试通过,其它版本未经测试。 优点: 实现原理为mybatis的拦截器,但是比网上目前流行的修行sql方式优化,只是第一次调用查询时需要处理,以后不需要再额外...
使用maven和jdk1.8 项目导入直接更改数据库连接即可使用
近期由于工作需要,想要开发一版能够满足多数人员使用的mybatis分页拦截器,在网上查找了很多资料并结合自己的一些理解,开发出了以下一版简单的代码。 起初想要遵循江湖惯例,通过各个层级间传递分页参数来实现目标...
使用MyBatis中的RowBounds进行分页查询时,不需要在 sql 语句中写 offset,limit,mybatis 会自动拼接 分页sql ,添加 offset,limit,实现自动分页。 需要前台传递参数currentPage和pageSize两个参数,分别是当前页...
自己最近搭建的一个SpringMVC+Mybatis的框架 属于无实体类的框架 并实现了Myabtis的自动分页和总数查询 只要传入分页参数便能自动查询总数和分页 总数封装在参数里面执行查询后可以直接从参数中获取
mybatis拦截器的完整实现,test.sql是数据库测试脚本,主要目的是生成mybatis最终执行的sql语句,并打印出来,方便调试。 基于此,可以实现自动化分页。
智能排班系统Spring+SpringMVC+MyBatis+PateHelper分页+JS+JQ
实现Mybatis的分页查询模块,支持MySQL、PostgreSQL、SQLServer等数据库分页查询 通用的权限管理模块,基于Apache Shiro的 用户-角色-权限(RBAC)的细粒度权限控制 大量配置示例,根据需求,自由优化、调整,达到最佳...
3、后台的分页使用Mybatis的插件pagehelper实现 5.添加定时任务:不再使用作业自动调度框架Quartz实现作业调度,使用spring框架自带的调度器进行作业调度,简化了配置。@Scheduled是单线程的,每次最多只有一个作业...
利用mybatis-generator自动生成代码 实现快捷操作 很方便
主要介绍了MyBatis-plus+达梦数据库实现自动生成代码的示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
mybatis实战教程mybatis in action之七实现mybatis分页源码下载 mybatis实战教程mybatis in action之八mybatis 动态sql语句 mybatis实战教程mybatis in action之九mybatis 代码生成工具的使用 mybatis ...
2.前端框架采用https://adminlte.io ,后台的分页使用Mybatis的插件pagehelper实现; 3.数据库使用Mysql中自带的sakila数据库,使用前,请将application.yml中的spring.datasource.ssm.password中的数据库密码设置...
4、后台的分页使用Mybatis的插件pagehelper实现 5、不再使用作业自动调度框架Quartz实现作业调度,使用spring框架自带的调度器进行作业调度,简化了配置; 6、json插件使用阿里的开源fastjson工具,注意低版本的...
内置分页插件:基于Mybatis物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于普通List查询 内置性能分析插件:可输出Sql语句以及其执行时间,建议开发测试时启用该功能,能有效解决慢查询 内置...
2、工具主要针对SpringMvc+Mybatis注解+Mysql生成对象,dao、sqlDao、interface、实现接口 3、根据表生成Excel 4、生成成功后倒入到自己对应的项目中,然后Ctrl+Shipt+O(Eclipse快速倒入包)实现 5、里面因为运用的...
通过SpringBoot整合MyBatis,具体说明如下: 1.项目以maven创建 2.Mybatis的基本代码由mybatis generator 自动生成代码插件自动生成 3.数据库连接池使用alibaba的druid...4.使用Pagehelper分页帮助类,实现分页效果
丰富功能:代码生成、自动分页、逻辑删除、自动填充等功能一应俱全。 其优点如下: 无侵入:Mybatis-Plus 在 Mybatis 的基础上进行扩展,只做增强不做改变,引入 Mybatis-Plus 不会对您现有的 Mybatis 构架产生任何...