需求
前后段代码都是基于jeecg-boot框架生成的,所有接口都是可用的。
由于业务逻辑规定用户在控制台操作删除按钮时,不是执行之前的删除数据逻辑。而是要调后端删除接口,将数据库的del_flag字段由0置为1。考虑到接口比较多,所以我在这里就偷了个懒。
mybatis-plus版本在3.3.0之上建议使用yml配置+字段注解逻辑删除
https://baomidou.com/guide/logic-delete.html
3.3.0以下再考虑用这个。
先重新写了一个接口方法类ICommonService。它继承了原来mybatis-plus的IService。
/**
* 公共service方法
* @author yangyi
* @param <T>
*/
public interface ICommonService<T> extends IService<T> {
/**
* 插入对象后,将对象返回
* @param entity
* @return
*/
T insertOne(T entity);
/**
* 将对象delFlag字段设置为1
* @param id
*/
void delFlagValid(String id);
}
再将ICommonService实现
/**
* 公共服务实现类
* @author yangyi
* @param <M>
* @param <T>
*/
public class CommonServiceImpl<M extends BaseMapper<T>, T> extends ServiceImpl<M, T> implements ICommonService<T> {
/**
* 插入对象后,将对象返回
* @param entity
* @return
*/
@Override
public T insertOne(T entity) {
boolean result = save(entity);
if(result){
return entity;
}else {
return null;
}
}
@Override
public void delFlagValid(String id) {
T object = getById(id);
if (object != null) {
try {
Class<?> aClass = object.getClass();
Field field = aClass.getDeclaredField("delFlag");
field.setAccessible(true);
field.set(object,1);
} catch (NoSuchFieldException | IllegalAccessException e) {
e.printStackTrace();
}
updateById(object);
}
}
}
有写的不好的地方还望指正。
非常感谢一位朋友的提醒,也把感悟分享给大家。
如果能统一处理的还是尽量封装,避免写重复的代码。