LoginSignup
0
0

【MyBatis-Plus】論理削除する方法

Last updated at Posted at 2024-04-13

論理削除する方法

主に2通りの方法が存在する。

方法1.アノテーションを付与する

@TableLogicを論理削除フィールドに付与する

User.java
package com.example.demo.entity;

import com.baomidou.mybatisplus.annotation.TableLogic;

import lombok.Data;

@Data
public class User {

	private int id;

	private String userName;

	private int age;
	
	@TableLogic
	private int deleted;

}

生成されるSQL文

テストコード
package com.example.demo;

import java.util.List;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import com.example.demo.entity.User;
import com.example.demo.mapper.UserMapper;

@SpringBootTest
class DemoApplicationTests {

	@Autowired
	private UserMapper userMapper;

	@Test
	void test() {
		List<User> userList = userMapper.selectList(null);
		// ==>  Preparing: SELECT id,user_name,age,deleted FROM user WHERE deleted=0
		// ==> Parameters: 
		// <==      Total: 10
		
		userMapper.deleteById(2);
		// ==>  Preparing: UPDATE user SET deleted=1 WHERE id=? AND deleted=0
		// ==> Parameters: 2(Integer)
		// <==    Updates: 1

  		User updateUser = new User();
		updateUser.setId(5);
		updateUser.setAge(10);
		userMapper.updateById(updateUser);
		// ==>  Preparing: UPDATE user SET age=? WHERE id=? AND deleted=0
		// ==> Parameters: 10(Integer), 5(Integer)
		// <==    Updates: 1
	}
}

:warning: 注意

下記のいずれかを行いたい場合は、@TableLogic の付与は非推奨

  • 論理削除済みのレコードもselectしたい
    • 条件に deleted=0 が追加されるため
  • 論理削除時に更新時間を記録したい

方法2. 共通の論理削除フィールド名を設定する

以下のように設定すると、deletedフィールドはアノテーションを付与しなくても論理削除フィールドとみなされる。(3.3.0以降)

application.yml
mybatis-plus:
  global-config:
    db-config:
      logicDeleteField: deleted   # 共通の論理削除フィールド名, デフォルト値: null
      # デフォルトの削除値、未削除値でよい場合は下記の設定は不要
      logic-delete-value: 1       # 論理削除値, デフォルト値: 1
      logic-not-delete-value: 0   # 論理未削除値, デフォルト値: 0

参考ページ

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0