mybatisPlus ページング構成操作

目次

サポートされているデータベース

ページングプラグイン

カスタムページネーションプラグイン


ページング操作は実際の開発では非常に一般的であり、さまざまなプラットフォームや 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: 現在のページ番号
  • サイズ: ページごとのアイテム数

おすすめ

転載: blog.csdn.net/m0_62436868/article/details/131902312