上MyBatisのプラスプラグインの拡張機能を学習

A、機構MyBatisのプラグイン

ターゲット・オブジェクトに関連するプラグイン(インターセプター)を介してMyBatisの(4つのオブジェクト)データを関連する動的プロキシ完全な変化、より多くの機能を提供します。

ここにいないその内部実装では、唯一の関連プラグ-MPプランをご紹介します。

二、MPプラグインの説明

2.1、改ページプラグイン

MPは、なぜ使用のページネーションはそれをプラグインでBaseMapperに関連するページング方式のselectPageを提供しているようですか?

RowBoundsてselectPageページングはiBATISのためです、そしてそれはメモリページングであり、それが推奨されていません

物理ページを達成するために、バックには限界キーワードに関連するクエリを追加されたウィジェットのページングの使用

applicationContext.xmlを

< ビーンID = "sqlSessionFactory" クラス= "com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean" > 
        < プロパティ= "データソース" REF = "データソース" > </ プロパティ> 
        < プロパティ= "configLocation" = "クラスパス。 MyBatisの-config.xmlの"  /> 
        < プロパティ= "typeAliasesPackage" = "cn.hjj.mp.entity" > </ プロパティ> 
        < プロパティ="globalConfig」 REF = "globalConfiguration"> </ プロパティ> 
        
        <! - 注入插件- > 
        < プロパティ= "プラグイン" > 
            < リスト> 
              <! - 分页插件- > 
              < 豆のクラス= "com.baomidou.mybatisplus.plugins.PaginationInterceptor" > </ >             
            </ リスト> 
        </ プロパティ> 
    </ >

次のようにテストコード

    / ** 
     *プラグタブを使用してテスト
     * / 
    @Test 
    公共 無効testPaginate(){ 
        ページ <社員> =ページの新しい新しい(1 ,. 3ページ<> ); 
        リスト <従業員> = employeeMapper.selectPage EMPS(ページ、ヌル);   / / LIMIT 0,3 tbl_employee FROM 
        のSystem.out.println(EMPS)
        
        のSystem.out.println(「ページング情報を取得========== ============= " ); 
        のSystem.out.println( "の合計数: "+ page.getTotal()); 
        のSystem.out.println( "ページ"+ page.getPages()); 
        のSystem.out.println( "現在のページ:「+page.getCurrent()); 
        System.out.printlnは( "ページあたりの個数:" + page.getSize()); 
        System.out.printlnは( "前があります:" + page.hasPrevious()) ; 
        のSystem.out.println( "IF次ページ:" + page.hasNext());
         //は、ページオブジェクトには、このページのデータをカプセル化
        page.setRecords(EMPS); 
    }

カプセル化のためのページタブのパラメータ

2.2、分析プラグインを実行します

SQL実行解析プラグインで現在唯一MYSQL5.6.3以上でサポートされています、

役割は、DELETEとUPDATE文は、フルテーブル運転しているかどうかを分析することが主な理由です。

キーワードは、本質的に実行するSQL文を分析するためのSQL文の前にあるモザイクで説明

テーブル全体かどうかを決定するために余分な列決意結果

applicationContext.xmlを

 < ビーンID = "sqlSessionFactory" クラス= "com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean" > 
        < プロパティ= "データソース" REF = "データソース" > </ プロパティ> 
        < プロパティ= "configLocation" = "クラスパス。 MyBatisの-config.xmlの"  /> 
        < プロパティ= "typeAliasesPackage" = "cn.hjj.mp.entity" > </ プロパティ> 
        < プロパティ="globalConfig」 REF = "globalConfiguration"> </ プロパティ> 
        
        <! - インジェクションプラグイン- > 
        < プロパティ= "プラグイン" > 
            < リスト> 
              <! - 解析プラグインの生産環境は、使用することは推奨されていない実行- > 
              < 豆のクラス=「com.baomidou。 mybatisplus.plugins.SqlExplainInterceptor " > 
                      <! - stopProceedは完全なテーブルの削除更新ステートメントの実装が実行を停止するかどうかを発見する- > 
                      < プロパティ=" stopProceed " =" true "にする> </ プロパティ> 
              </ >           
            </ 一覧> 
        </ プロパティ> 
    </>

次のようにテストコード

    / ** 
     *テスト用プラグイン解析の実行
     SQL SQLキーワード分析することによって、この性質を説明行なわ* 
     * / 
    (予想@Testを。=例外クラス公共 無効testSqlExplain(){ 
        employeeMapper.delete(ヌル); // 完全なテーブル・削除 
    }

2.3パフォーマンス分析のプラグイン

主なSQL文の出力とその実行時間が、あなたはそれが規定時間を超えて設定することができ、ストップランニング

本番環境にはお勧めしません

applicationContext.xmlを

    < ビーンID = "sqlSessionFactory" クラス= "com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean" > 
        < プロパティ= "データソース" REF = "データソース" > </ プロパティ> 
        < プロパティ= "configLocation" = "クラスパス。 MyBatisの-config.xmlの"  /> 
        < プロパティ= "typeAliasesPackage" = "cn.hjj.mp.entity" > </ プロパティ> 
        < プロパティ="globalConfig」 REF = "globalConfiguration"> </ プロパティ> 
        
        <! - インジェクションウィジェット- > 
        < プロパティ= "プラグイン" > 
            < リスト> 
              <! - パフォーマンス分析ウィジェット- > 
              < 豆のクラス= "com.baomidou.mybatisplus.plugins.PerformanceInterceptor" > 
                      < プロパティ=「形式」=「trueに」> </ プロパティ> 
                      <! - 実行時間の最大値は、エラーを超える設定し、最適化のヒントが、SQLの実装を成功さなど- > 
                      <! - <プロパティ名= "MAXTIME"値= "100000"> </プロパティ> - >
              </ >              
            </ リスト> 
        </ プロパティ> 
    </ >

2.4、楽観的ロックプラグ

オプティミスティック・ロックのプラグインを実行する事は次のとおりです。

記録を削除するとき1、それはバージョン値の現在のバージョンをもたらします

バージョンの比較値2、その後、データベースレコードとそのバージョン値を更新します

      それらが等しい場合、更新操作が実行され、バージョン+ 1が、等しい場合、更新は失敗し

実際には、需要がレコードを更新するときに達成するために期待されている、と私は、このレコードが他の人に更新されていない願っています

注:使用楽観的ロック@Version注釈エンティティのフィールドを必要とされ、データベースにも対応するマップフィールドを持っている必要がありますプラグイン

@tablename(「tbl_employee」パブリック クラス従業員延びモデル<従業員> { 

    プライベート 静的 最終 長いのserialVersionUID = 1Lを

    @TableId(値 = "ID"、タイプ= IdType.AUTO)
     プライベート整数ID。
    プライベート文字列lastNameの。
    プライベート文字列のメール。
    プライベート文字列の性別;
    プライベート整数歳。
    @Version 
    プライベート整数バージョン。

applicationContext.xmlを

    < ビーンID = "sqlSessionFactory" クラス= "com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean" > 
        < プロパティ= "データソース" REF = "データソース" > </ プロパティ> 
        < プロパティ= "configLocation" = "クラスパス。 MyBatisの-config.xmlの"  /> 
        < プロパティ= "typeAliasesPackage" = "cn.hjj.mp.entity" > </ プロパティ> 
        < プロパティ="globalConfig」 REF = "globalConfiguration"> </ プロパティ> 
        
        <! - 注入插件- > 
        < プロパティ= "プラグイン" > 
            < リスト> 
              <! - 乐观锁插件- > 
              < 豆のクラス= "com.baomidou.mybatisplus.plugins.OptimisticLockerInterceptor" > </ >               
            </ リスト> 
        </ プロパティ> 
    </ >

おすすめ

転載: www.cnblogs.com/jayhou/p/9824571.html