mybatis-plus邏輯刪除

數據庫中添加一個字段 delete_status 表示是否刪除 給個默認值爲0
相關實體類加上這個屬性

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    @TableId(type=IdType.AUTO)
    private Long id;
    private String name;
    private Integer age;
    private String email;
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;

    @TableLogic//邏輯刪除註解
    private Integer deleteStatus;
}

3.1.1版本之前需要配置

package com.example.demo.handler;

import com.baomidou.mybatisplus.core.injector.ISqlInjector;
import com.baomidou.mybatisplus.extension.injector.LogicSqlInjector;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @author 
 * @date 2020/06/17
 * @description: description
 * @version: 1.0.0
 */
@Configuration
public class MyConfig {
    @Bean
    public ISqlInjector SqlInjector(){
        return new LogicSqlInjector();
    }
}

application.properties

#邏輯刪除配置
mybatis-plus.global-config.db-config.logic-delete-value=1
mybatis-plus.global-config.db-config.logic-not-delete-value=0

測試

@Test
    void contextLoads() {
        User user=new User();
        userMapper.deleteById(1L);
        List<User> users = userMapper.selectList(null);
        users.forEach(System.out::println);
        //Creating a new SqlSession
        //SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@70fede7d] was not registered for synchronization because synchronization is not 
        // active
        //JDBC Connection [com.alibaba.druid.proxy.jdbc.ConnectionProxyImpl@4b28a7bf] will not be managed by Spring
        //==>  Preparing: UPDATE user SET delete_status=1 WHERE id=? AND delete_status=0 
        //==> Parameters: 1(Long)
        //<==    Updates: 1
        //Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@70fede7d]
        //Creating a new SqlSession
        //SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@34d9df9f] was not registered for synchronization because synchronization is not 
        // active
        //JDBC Connection [com.alibaba.druid.proxy.jdbc.ConnectionProxyImpl@4b28a7bf] will not be managed by Spring
        //==>  Preparing: SELECT id,name,age,email,create_time,update_time,delete_status FROM user WHERE delete_status=0 
        //==> Parameters: 
        //<==    Columns: id, name, age, email, create_time, update_time, delete_status
        //<==        Row: 2, Jack, 20, [email protected], null, null, 0
        //<==        Row: 3, Tom, 28, [email protected], null, null, 0
        //<==        Row: 4, Sandy, 21, [email protected], null, null, 0
        //<==        Row: 5, Billie, 24, [email protected], null, null, 0
        //<==        Row: 6, Jack, 3, [email protected], 2020-06-16 22:05:12, 2020-06-16 22:05:12, 0
        //<==        Row: 7, Jack, 3, [email protected], 2020-06-16 22:05:12, 2020-06-16 22:05:12, 0
        //<==        Row: 1272823863285137410, 張三, 10, 看修改時間, 2020-06-16 20:06:40, 2020-06-16 20:06:40, 0
        //<==        Row: 1272823863285137411, 李四, 10, 紅紅火火恍恍惚惚, null, null, 0
        //<==        Row: 1272823863285137412, 修改時間成功否, 3, [email protected], 2020-06-16 20:58:57, 2020-06-16 21:04:31, 0
        //<==        Row: 1272823863285137413, 測試插入, 18, [email protected], 2020-06-16 22:05:12, 2020-06-16 22:05:12, 0
        //<==        Row: 1272823863285137414, 李三, null, [email protected], 2020-06-16 22:05:12, 2020-06-16 23:20:10, 0
        //<==      Total: 11
        //Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@34d9df9f]
        //User(id=2, name=Jack, age=20, [email protected], createTime=null, updateTime=null, deleteStatus=0)
        //User(id=3, name=Tom, age=28, [email protected], createTime=null, updateTime=null, deleteStatus=0)
        //User(id=4, name=Sandy, age=21, [email protected], createTime=null, updateTime=null, deleteStatus=0)
        //User(id=5, name=Billie, age=24, [email protected], createTime=null, updateTime=null, deleteStatus=0)
        //User(id=6, name=Jack, age=3, [email protected], createTime=Tue Jun 16 22:05:12 CST 2020, updateTime=Tue Jun 16 22:05:12 CST 2020, deleteStatus=0)
        //User(id=7, name=Jack, age=3, [email protected], createTime=Tue Jun 16 22:05:12 CST 2020, updateTime=Tue Jun 16 22:05:12 CST 2020, 
        // deleteStatus=0)
        //User(id=1272823863285137410, name=張三, age=10, email=看修改時間, createTime=Tue Jun 16 20:06:40 CST 2020, updateTime=Tue Jun 16 20:06:40 CST 2020, 
        // deleteStatus=0)
        //User(id=1272823863285137411, name=李四, age=10, email=紅紅火火恍恍惚惚, createTime=null, updateTime=null, deleteStatus=0)
        //User(id=1272823863285137412, name=修改時間成功否, age=3, [email protected], createTime=Tue Jun 16 20:58:57 CST 2020, updateTime=Tue Jun 16 21:04:31 
        // CST 2020, deleteStatus=0)
        //User(id=1272823863285137413, name=測試插入, age=18, [email protected], createTime=Tue Jun 16 22:05:12 CST 2020, updateTime=Tue Jun 16 22:05:12 CST 2020,
        // deleteStatus=0)
        //User(id=1272823863285137414, name=李三, age=null, [email protected], createTime=Tue Jun 16 22:05:12 CST 2020, updateTime=Tue Jun 16 23:20:10 
        // CST 2020, deleteStatus=0)
    }

其實它執行的是更新操作

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章