• Mybatis Plus逻辑删除


    只对自动注入的sql起效:

    • 插入: 不作限制
    • 查找: 追加where条件过滤掉已删除数据,且使用 wrapper.entity 生成的where条件会忽略该字段
    • 更新: 追加where条件防止更新到已删除数据,且使用 wrapper.entity 生成的where条件会忽略该字段
    • 删除: 转变为 更新

    注:

    • 逻辑删除是为了方便数据恢复和保护数据本身价值等等的一种方案,但实际就是删除。

    • 如果你需要频繁查出来看就不应使用逻辑删除,而是以一个状态去表示。


    一、局部设置

    @TableLogic()
    private Integer deleted;

    二、全局设置

    #逻辑删除状态设置
    mybatis-plus.global-config.db-config.logic-not-delete-value = 0
    mybatis-plus.global-config.db-config.logic-delete-value= = 1

    三、测试

    RunWith(SpringRunner.class)
    @SpringBootTest
    public class LogicTest {
    
        @Autowired
        private UserInfoMapper userInfoMapper;
    
        /**
         * 根据id删除
         */
        @Test
        public void deleteById() {
            int rows = userInfoMapper.deleteById(123455);
            System.out.println("影响记录数:"+rows);
        }
    
        /**
         * 获取没有删除的数据
         */
        @Test
        public void select() {
            List<UserInfo> list = userInfoMapper.selectList(null);
            list.forEach(System.out::println);
        }
    
        /**
         * 修改没有删除的数据
         */
        @Test
        public void updateById() {
           UserInfo userInfo = new UserInfo();
           userInfo.setAge(26);
           userInfo.setId(12323434);
           int rows = userInfoMapper.updateById(userInfo);
        }
    }

    四、查询不取字段

    @TableField(select = false)
    private Integer deleted;

    五、自定义查询

    import com.baomidou.mybatisplus.core.conditions.Wrapper;
    import com.baomidou.mybatisplus.core.toolkit.Constants;


    @Select("select * from user ${ew.customSqlSegment}") List<UserInfo> mySelect(@Param(Constants.WRAPPER) Wrapper<UserInfo> wrapper); /** *自定义查询所有数据 */ @Test public void mySelect() { List<UserInfo> list = userInfoMapper.mySelect(Wrappers.<UserInfo> lambdaQuery().gt(UserInfo::getAge,25)); list.forEach(System.out::println); } /** * 自定义查询没有删除的数据 */ @Test public void mySelect1() { List<UserInfo> list = userInfoMapper.mySelect(Wrappers.<UserInfo> lambdaQuery().gt(UserInfo::getAge,25).eq(UserInfo::getDeleted,0)); list.forEach(System.out::println); }
  • 相关阅读:
    poj 2349 Arctic Network
    hdu 1596 find the safest road
    Codeforces 768B. Code For 1
    Codeforces 448C. Painting Fence
    Problem D. Ice Cream Tower(2016 China-Final)
    poj 2785 4 Values whose Sum is 0
    Codeforces 797C. Minimal string
    Codeforces 264A. Escape from Stones
    乌龟棋(noip2010)
    noip2018模拟题(类背包+贪心)
  • 原文地址:https://www.cnblogs.com/DoNetCShap/p/15935597.html
Copyright © 2020-2023  润新知