情景:SSM框架的web项目,数据库连的是sqlserver,借助pageHelper做分页功能。
第一,配置文件mybatis-config.xml
注意点就是:
<property name="dialect" value="sqlserver"/>
<?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>
<settings>
<setting name="logImpl" value="STDOUT_LOGGING" />
</settings>
<plugins>
<plugin interceptor="com.github.pagehelper.PageHelper">
<property name="dialect" value="sqlserver"/>
<property name="offsetAsPageNum" value="true"/>
<property name="rowBoundsWithCount" value="true"/>
<property name="pageSizeZero" value="true"/>
<property name="reasonable" value="false"/>
<property name="returnPageInfo" value="check"/>
</plugin>
</plugins>
</configuration>
第二,页数从1开始,pageHelper进行了这样的一个统一规定,以往我们手写分页的时候,mysql的首页从0开始。
第三,select * from xxx ORDER BY create_time DESC 查询语句,必须带上order by 功能。
第四,多表关联查询的时候,如果在select 和 from 之间写了具体字段名称,就不会得到 PAGE_ROW_NUMBER 字段值。
那么多表关联该如何查询出这个PAGE_ROW_NUMBER了?
语句写成如下这样既可:
select * from (
select x.a,x.b,x.c from x
) a ORDER BY a.time DESC
关键点就是在原有语句外套一个:select * from (----------) a order by a.time desc
情景:SSM框架的web项目,数据库连的是sqlserver,借助pageHelper做分页功能。第一,配置文件mybatis-config.xml注意点就是: <property name="dialect" value="sqlserver"/><?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configur...
文章目录前言一、pom文件引入二、测试总结
Don’t Repeat Yourself,在之前几个项目中,在使用mybatis做分页时,一直使用自定义page分页工具类,工具类中包含了
//当前页码
private Integer page;
//页展示条目数
private Integer rows= 10;
private Integer startWith;
private Integer endWith;
几个参数,在进行分页查询时,需要执行count语句计算分页信息,在将
1.JDBCTemplate
基本与jdbc连接数据库的代码差不多,要支持多数据库,最关键的是分页的语句。
解决思路:编写一个统一处理sql的方法,接收业务SQL,根据不同的数据库类型,返回最终处理好的分页SQL。
@Repository
public class BaseDao {
* 处理业务SQL为可分页SQL
* @param sql 业务sql
* @param start 开始索引 = (页号 - 1 ) * 每页条数
* @param end 结束索引 =
pagehelper.helperDialect=sqlserver2012
pagehelper.reasonable=true
pagehelper.supportMethodsArguments=true
pagehelper.params=count=countSql
第一种:ROW_NUMBER() OVER()方式
select * from (
select *, ROW_NUMBER() OVER(Order by ArtistId ) AS RowId from ArtistModels
) as b
where RowId between 10 and 20
---where RowId BETWEEN 当前页数-1
Mybatis中使用pageHelper 进行分页
pageHelper 是mybatis中一种良好的分页插件,它可以支持任何复杂的单表、多表分页,使用也是非常的简单。
1.导入maven坐标(或者jar包)
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Pageable {
int defaultPage() default 0;
int defaultSize() default 10;
int maxPage() default 500;
int maxSize() default 100;
boolean
PageHelper是一个用于MyBatis的分页插件,它可以根据不同的数据库类型自动选择合适的分页方式。在配置PageHelper时,你可以使用helperDialect属性来指定分页插件使用的数据库方言。对于SqlServer2008,你可以将helperDialect属性设置为"sqlserver"。在使用SqlServer2012及以上版本时,你需要手动指定为"sqlserver2012",否则会使用SqlServer2005的分页方式。
在配置完pom.xml和MyBatis的配置文件后,你可以在controller层使用PageHelper来实现简单的分页功能。在前端页面中,你可以直接使用a标签实现分页跳转,无需使用ajax和json。
参考链接中的pagehelper中文文档可以帮助你更详细地了解如何使用PageHelper插件。