跟踪运行发现更改操作的UpdateSqlProvider里面的delete其实提供的是update status='1’的操作, 若需要真的删除,则需要修改它, 而UpdateSqlProvider又不开源, 所以我们可以写一个继承它
package com.jeesite.common.mybatis.mapper.provider;
import com.jeesite.common.entity.BaseEntity;
import com.jeesite.common.mybatis.mapper.MapperHelper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class MyUpdateSqlProvider extends UpdateSqlProvider{
private Logger logger = LoggerFactory.getLogger(this.getClass());
@Override
public String delete(BaseEntity<?> entity) {
//long lvTm = System.currentTimeMillis();
return "delete from "+ MapperHelper.getTableName(MapperHelper.getTable(entity), entity)+" where id=#{id}";
}
}
同样,也要写一个 MyCrudDao继承CrudDao,因为要用新的sqlprovider:
package com.jeesite.common.dao;
import org.apache.ibatis.annotations.UpdateProvider;
import com.jeesite.common.mybatis.mapper.provider.*;
public interface MyCrudDao<T> extends CrudDao<T> {
@UpdateProvider(
type = MyUpdateSqlProvider.class,
method = "delete"
)
@Override
long delete(T var1) ;
}
然后, 将所有的xxxDao的extends CrudDao改为extends MyCrudDao 即可 .

这篇博客探讨了如何在JeeSite4中将默认的软删除操作转换为真正的删除操作。作者通过跟踪代码发现,UpdateSqlProvider提供的删除实际上是更新status为1,为实现真删除,他创建了一个继承UpdateSqlProvider的自定义类,并相应地修改了MyCrudDao,以使用新的SQL提供者。最后,将所有DAO类从继承CrudDao改为继承MyCrudDao,完成了真删除的设置。
3119

被折叠的 条评论
为什么被折叠?



