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" > </ 豆> </ リスト> </ プロパティ> </ 豆>