重写mybatisplusremoveById()

重写mybatis plus removeById()

 想要根据id删除一个东西,但是如果传来的id不存在就返回错误,体验不好,随便传入id也把这个id当存在返回成功删除。
/**
     * 根据 ID 删除
     * 
     * @param id 主键ID
     */
    default boolean removeById(Serializable id) {
        return SqlHelper.retBool(getBaseMapper().deleteById(id));
    }

可以看到mybatisplus的removeById()是根据数据库中已有id删除的结果作为参数。进入retBool()方法

 /**
     * 判断数据库操作是否成功
     *
     * @param result 数据库操作返回影响条数
     * @return boolean
     */
    public static boolean retBool(Integer result) {
        return null != result && result >= 1;
    }

如果id不存在,返回值是一个false删除不了。所以 重写mybatis plus的逻辑删除方法

/**
 * 用户传入不存在id也当做已经删除了
 *
 * @param id 用户id
 * @return boolean
 */
@Override
public boolean  removeById(Serializable id) {
    if(!exists((String) id)){
        return true;
    }
    return super.removeById(id);
}

/**
 *  id是否存在
 *
 * @param id 用户id
 * @return boolean
 */
public boolean exists(String id){
    return Objects.nonNull(id);
}

重写用到了Objects工具类的nonNull(Object obj)方法,如果不为null返回true

同样如果想要级联删除一个类别下的所有东西,但如果这个类别下是一个空的,就删除这个类别,这个可以重写removeByIds(),只需要改一下 if语句块的返回值奥!

  default boolean removeByIds(Collection<? extends Serializable> idList) {
        if (CollectionUtils.isEmpty(idList)) {
            return false;
        }
        return SqlHelper.retBool(getBaseMapper().deleteBatchIds(idList));
    }
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
06-02
重写(override)是指在子类中重新实现(覆盖)从父类继承来的方法。在Java中,子类可以通过重写父类的方法来改变该方法的行为。重写方法的签名(即方法名、参数类型和返回类型)必须与被重写方法的签名相同,否则编译器会报错。 在子类中重写父类的方法时,可以使用super关键字来调用父类的方法。例如,可以在子类中使用super.methodName()来调用父类中的methodName方法。 重写的目的通常是为了改变方法的行为,例如根据子类的特殊需求来实现不同的逻辑,或者提高方法的性能等。 下面是一个简单的重写示例,假设有一个Animal类和一个Cat类,Cat类继承自Animal类,并重写了Animal类的makeSound方法: ```java public class Animal { public void makeSound() { System.out.println("The animal makes a sound."); } } public class Cat extends Animal { @Override public void makeSound() { System.out.println("The cat meows."); } } ``` 在这个例子中,Animal类有一个makeSound方法,输出一个字符串表示动物发出了声音。Cat类继承了Animal类,并重写了makeSound方法,使得猫发出的声音是“meows”,而不是“makes a sound”。 当我们调用Cat类的makeSound方法时,会优先调用Cat类中的方法,而不是Animal类的方法。因此,下面的代码 ```java Animal animal = new Cat(); animal.makeSound(); ``` 输出的结果是: ``` The cat meows. ``` 这说明Cat类中的makeSound方法已经成功地重写了Animal类的makeSound方法,使得猫发出了“meows”的声音。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值