カスタムグローバルオペレーションおよびロジックでMyBatisのプラス削除学習

I.はじめにカスタムグローバルオペレーション

MPはAutoSqlInjectorが拡張提供所望カスタマイズすることができ、SQLをカスタムに対応するグローバル、MPに注入自動注入のための方法。すなわち、インターフェースはメソッドである場合、それぞれのローディングの構成環境に注入するBaseMapper <T>を継承しています。 

第二に、以下のカスタムグローバルを達成するために

2.1、マッパーでインターフェースで定義された方法を実装し

パブリック インターフェース EmployeeMapper 延び BaseMapperを<従業員> { 
    
    / ** 
     *カスタム注入法
     * @return 
     * / 
    INT DELETEALL(); 
}

2.2、継承AutoSqlInjector、および内部噴射方法のオーバーライド

パブリック クラス DeleteAllInject 拡張AutoSqlInjector { 
    @Override 
    公共 のボイドジェクト(設定設定、MapperBuilderAssistant builderAssistant、クラス<?> mapperClass、
            クラス <?> modelClass、TableInfo表){
         / ** 
         *コアは方法で、SQL文のインターフェイスマッパーがありますマッピング
         *ターゲットMapperStatementにパッケージ
         自動的に初期化中にロードされる* Configurationオブジェクト
         * / 
        文字列のSQL = + "から削除" table.getTableName(); 
        文字列メソッド = "DELETEALL" ; 
        SqlSource sqlSource =languageDriver.createSqlSource(構成、SQL、modelClass)。
        この.addDeleteMappedStatement(mapperClass、方法、sqlSource)。
    } 
}

2.3最後に、豆にグローバルコンフィギュレーション政策に注入しました

    <! - MyBatisの-PLUSため、グローバルコンフィギュレーションポリシー、各エンティティの構成では、アノテーションの繰り返し使用を避けること- > 
    < ID =「globalConfiguration」クラス=「com.baomidou.mybatisplus.entity.GlobalConfiguration」> 
        < プロパティ= "dbColumnUnderline" = "trueに" > </ プロパティ>   <! - デフォルトのコンフィギュレーション・データベースバージョン2.3アンダースコア- > 
        <! - 指定したデータベースID生成戦略0:インクリメントデータベース- > 
        < プロパティ= " idtype " =" 0 " > </ プロパティ> 
        <! - 指定されたデータベースのテーブルのプレフィックス- >
        < プロパティ= "tablePrefix" = "TBL_" > </ プロパティ> 
        <! - 注入全局配置方法- > 
        < プロパティ= "sqlInjector" REF = "deleteAllInject" > </ プロパティ> 
    </ > 
    
     < ID = "deleteAllInject" クラス= "cn.hjj.mp.inject.DeleteAllInject" > </ >

2.4、次のテストコード

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(位置= { "クラスパス:applicationContext.xmlを"})
publicクラスTestAutoSqlInject { 
    @Autowired 
    プライベートEmployeeMapper employeeMapper。
    
    @Test 
    公共ボイドtestDeleteAll(){ 
        employeeMapper.deleteAll()。
    } 
}

 

第三に、墓石のプロフィール

墓碑:データは貴重であるため、データベースからの削除データに真実ではありません。データベース内の唯一の論理レコードが削除され、削除、削除状態フィールドがに設定されています

次のように墓石を達成

4.1、新しいエンティティを作成し、対応するデータベース内の対応するデータテーブルを作成します

@TableLogicを識別するために使用するノートフラグフィールドは、識別フィールドであるMPのノウハウを語りました

パブリック クラスユーザー{ 
     @TableId(タイプ = IdType.AUTO)
      プライベート整数ID、
      プライベート文字列名; 
     @TableLogic   // フラグの論理記号である
     プライベート整数deleteFlag; 
         
         // getメソッド
          // SETメソッド
          
}    

構成ファイル内の4.2、豆および設定対応するパラメータ

applicationContext.xmlを

    <! - MyBatisの-PLUSため、グローバルコンフィギュレーションポリシー、各エンティティの構成では、アノテーションの繰り返し使用を避けること- > 
    < ID =「globalConfiguration」クラス=「com.baomidou.mybatisplus.entity.GlobalConfiguration」> 
        < プロパティ= "dbColumnUnderline" = "trueに" > </ プロパティ>   <! - デフォルトのコンフィギュレーション・データベースバージョン2.3アンダースコア- > 
        <! - 指定したデータベースID生成戦略0:インクリメントデータベース- > 
        < プロパティ= " idtype " =" 0 " > </ プロパティ> 
        <! - 指定されたデータベースのテーブルのプレフィックス- >
        < プロパティ= "tablePrefix" = "TBL_" > </ プロパティ> 
        <! - 削除インジェクションロジック- > 
        < プロパティ= "sqlInjector" REF = "logicSqlInjector" > </ プロパティ> 
        <! - 墓石グローバル値- - > 
        < プロパティ= "logicDeleteValue" = " - 1" > </ プロパティ> 
        <! - 論理はグローバル値を削除- > 
        < プロパティ= "logicNotDeleteValue" 「1" = > </ プロパティ> 
    </ >
    <! - コンフィギュレーションの墓石は、豆を注入された- > 
    < ID = "logicSqlInjector" クラス= "com.baomidou.mybatisplus.mapper.LogicSqlInjector" > </ >

4.3、次のテストコード

@RunWith(SpringJUnit4ClassRunner クラス
@ContextConfiguration(位置 = { "クラスパス:applicationContext.xmlを" })
 パブリック クラスTestLogicDelete { 
    @Autowired 
    プライベートUserMapper userMapper。
    @Test 
    公共 ボイドtestDelete(){ 
        整数RES = userMapper.deleteById(1 )。
        System.out.println( "RES:" + RES)。
    } 
    
    @Test 
    公共 ボイドtestSelect(){ 
        ユーザーユーザー = userMapper.selectById(1 )。
        System.out.println( "RES:" +ユーザー); 
    } 
}

エッセンス:削除、およびクエリは、現在の論理状態レコードを削除するには、時間が墓石フィールドを来るとき、削除が実際に更新ステートメントで実行されますが、「墓石グローバル値」の設定に更新されます

おすすめ

転載: www.cnblogs.com/jayhou/p/9825443.html
おすすめ