出现的问题
项目中使用了别人封装好的jar包,使用的是逻辑删除,但是在我们的数据库中由于唯一索引的存在,必须使用物理删除,因此需要对使用到逻辑删除的sql做监控,并且求改这些sql。
代码
/**
* mybatis拦截器
* 对所有sql语句进行监视,修改
*/
@Slf4j
@Component
@Intercepts({@Signature(type = StatementHandler.class, method = "prepare", args = {Connection.class, Integer.class})})
public class SqlignoreDeletedInterceptor implements Interceptor {
@Autowired
private lignoreDeleteTablesBeen lignoreDeleteTables;
@Override
public Object intercept(Invocation invocation) throws Throwable {
StatementHandler statementHandler = (StatementHandler) invocation.getTarget();
//通过MetaObject优雅访问对象的属性,这里是访问statementHandler的属性;:MetaObject是Mybatis提供的一个用于方便、
//优雅访问对象属性的对象,通过它可以简化代码、不需要try/catch各种reflect异常,同时它支持对JavaBean、Collection、Map三种类型对象的操作。
MetaObject metaObject = MetaObject
.forObject(statementHandler, SystemMetaObject.DEFAULT_OBJECT_FACTORY

本文介绍了如何在项目中使用Mybatis拦截器,针对依赖逻辑删除但在实际数据库中需物理删除的情况,监控并修改SQL语句,确保与数据库唯一索引兼容。
最低0.47元/天 解锁文章
6809

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



