MyBatisPlusのDMLプログラミング制御
1. ID 生成ポリシー制御 (挿入)
主キー生成の戦略は何ですか?
テーブルごとに異なる ID 生成戦略が適用されます
- ログ: 自動インクリメント (1、2、3、4、…)
- ショッピングオーダー: 特別ルール (FQ23948AK3843)
- テイクアウト注文:関連エリアの日付とその他の情報(10 04 20200314 34 91)
- 関係表:idは省略可能
- ……
1.1 ID生成ポリシー制御(@TableIdアノテーション)
-
名前: @TableId
-
タイプ:属性アノテーション
-
位置: モデル クラスの主キーを表すために使用される属性定義の上
-
機能: 現在のクラスの主キー属性の生成戦略を設定します。
-
関連する属性
type : 主キー属性の生成戦略を設定します。値は IdType 列挙値を参照します。
1.2 グローバルポリシーの設定
mybatis-plus:
global-config:
db-config:
id-type: assign_id
table-prefix: tbl_
ID 生成戦略のグローバル構成
テーブル名プレフィックスのグローバル構成
2. 複数レコード操作(一括削除・一括選択)
2.1 主キーに従って複数のレコードを削除する
//删除指定多条数据
List<Long> list = new ArrayList<>();
list.add(1402551342481838081L);
list.add(1402553134049501186L);
list.add(1402553619611430913L);
userDao.deleteBatchIds(list);
2.2 主キーに基づいて複数のレコードをクエリする
//查询指定多条数据
List<Long> list = new ArrayList<>();
list.add(1L);
list.add(3L);
list.add(4L);
userDao.selectBatchIds(list);
3. 論理削除(削除/更新)
実際の環境で、データを削除したい場合、実際にそのデータはデータベースから削除されるのでしょうか?
-
削除操作のビジネス上の問題: ビジネス データがデータベースから削除される
-
論理削除: データの利用可能ステータス フィールドを設定します。削除する場合、ステータス フィールドを利用不可ステータスに設定すると、データはデータベースに残ります。
3.1 論理削除の場合
3.1.1 論理削除マークフィールドをデータベーステーブルに追加する
3.1.2 対応するフィールドをエンティティ クラスに追加し、現在のフィールドを論理削除マーク フィールドとして設定する
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
@Data
public class User {
private Long id;
//逻辑删除字段,标记当前记录是否被删除
@TableLogic
private Integer deleted;
}
3.1.3 トゥームストーン リテラル値の構成
mybatis-plus:
global-config:
db-config:
table-prefix: tbl_
# 逻辑删除字段名
logic-delete-field: deleted
# 逻辑删除字面值:未删除为0
logic-not-delete-value: 0
# 逻辑删除字面值:删除为1
logic-delete-value: 1
論理削除の本質: 論理削除の本質は、実際には変更操作です。トゥームストーン フィールドが追加されると、データのクエリ時にトゥームストーン フィールドも自動的に含まれます。
SQL ステートメントを実行します。
update tbl_user set deleted=1 where id = ? and deleted = 0