目次
ページング操作は実際の開発では非常に一般的であり、さまざまなプラットフォームや Web サイトでページングの効果が確認できます。
例: 京東モールのページネーション効果
サポートされているデータベース
-
mysql、oracle、db2、h2、hsql、sqlite、postgresql、sqlserver、Phoenix、Gauss、clickhouse、Sybase、OceanBase、Firebird、cubrid、goldilocks、csiidb、informix、TDengine、redshift
-
大蒙データベース、徐谷データベース、人民大学金倉データベース、南達総合(華岳)データベース、南達総合データベース、神通データベース、漢高データベース、友宣データベース
MybatisPlus でページングを設定するにはどうすればよいですか? ここで私たちは考えます
MybatisPlus でクエリ ステートメントを実装する方法。クエリ ステートメントは 2 つの方法で実装できます。
[1] MybatisPlusが提供するメソッドで条件付きクエリを実現
[2] SQL文をカスタマイズしてクエリを実現する
次に、これら 2 つのページング メソッドを実装する方法を示します。
ページングプラグイン
ほとんどのシナリオでは、SQL がそれほど複雑でない場合、MybatisPlus が提供するメソッドを通じてクエリを直接実装できます。この場合、ページング プラグインを構成することでページング効果を実現できます。
ページングの本質は、インターセプターを設定し、インターセプターを通じて SQL をインターセプトし、 SQL ステートメントの最後に limit キーワードを追加することでページングの効果を実現することです。
次に、設定手順を見てみましょう
[1] 構成クラスを通じて特定のデータベースのページング プラグインを指定します。異なるデータベースの方言は異なるため、生成される特定のページング ステートメントも異なります。ここではデータベースを Mysql データベースとして指定します
@Configuration
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
}
DbType.MYSQL: mysql データベースのページネーションを指定します。
【2】ページネーションクエリ効果を実現
@Test
void selectPage(){
//1.创建QueryWrapper对象
LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();
//2.创建分页查询对象,指定当前页和每页显示条数
IPage<User> page = new Page<>(1,3);
//3.执行分页查询
userMapper.selectPage(page, lambdaQueryWrapper);
//4.查看分页查询的结果
System.out.println("当前页码值:"+page.getCurrent());
System.out.println("每页显示数:"+page.getSize());
System.out.println("总页数:"+page.getPages());
System.out.println("总条数:"+page.getTotal());
System.out.println("当前页数据:"+page.getRecords());
}
カスタムページネーションプラグイン
一部のシナリオでは、クエリを実行するために SQL ステートメントをカスタマイズする必要があります。次に、カスタム SQL のページング操作を示します。
[1] UserMapper.xml マッピング構成ファイルにクエリ ステートメントを指定します。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.powernode.mapper.UserMapper">
<select id="selectByName" resultType="com.powernode.domain.User">
select * from powershop_user where name = #{name}
</select>
</mapper>
[2] IPage オブジェクトがパラメータとして渡される、Mapper インターフェイスで対応するメソッドを提供します。
@Mapper
public interface UserMapper extends BaseMapper<User> {
IPage<User> selectByName(IPage<User> page, String name);
}
- パラメータ ページ: クエリ結果セットの自動ページネーションを実行します。つまり、クエリ結果セットの表示方法を指定します。例: 返された結果セットにはページ 1 のデータが表示され、ページごとに 10 行が表示されます —> new Page(1,10)
- 通常のリスト クエリを作成します。表示する必要があるデータの種類は、リストを指定するだけです。パラメータ ページは、ルールに従ってページ分割されます。
- Page を継承して独自のページング オブジェクトを実装します。次の行、前の行などを表示するには、ページング オブジェクト ルールを自分で記述する必要があります。
【3】ページネーションクエリ効果を実現
@Test
void selectPage2(){
//1.创建分页查询对象,指定当前页和每页显示条数
IPage<User> page = new Page<>(1,2);
//2.执行分页查询
userMapper.selectByName(page,"Mary");
//3.查看分页查询的结果
System.out.println("当前页码值:"+page.getCurrent());
System.out.println("每页显示数:"+page.getSize());
System.out.println("总页数:"+page.getPages());
System.out.println("总条数:"+page.getTotal());
System.out.println("当前页数据:"+page.getRecords());
}
IPage オブジェクトは MyBatis-Plus の組み込みページング オブジェクトであり、呼び出しインターフェイスで使用できるプロパティは次のとおりです。
- レコード: クエリされたリスト オブジェクト
- ページ: ページネーション後の総ページ数
- total: アイテムの合計数
- current: 現在のページ番号
- サイズ: ページごとのアイテム数