实际项目会遇到?/\* 等特殊字符数据的模糊查询,现总结依据mybatis拦截器实现步骤如下;
1. 实现Interceptor 重写intercept方法
2.对查询语句含有like模糊查询时,对查询参数进行转义处理
3. like 转化为对应的正则匹配函数查询
核心代码如下:
@Intercepts({@Signature(type = Executor.class, method = "query", args = {MappedStatement.class,
Object.class,
RowBounds.class,
ResultHandler.class})})
@Component
@Slf4j
@ConditionalOnClass(value = Interceptor.class)
public class MybatisLikeSqlInterceptor implements Interceptor {
@Override
public Object intercept(Invocation invocation) throws Throwable {
//先暂时 只处理mysql oracle 不支持多数据源
if(MybatisSqlConstant.MYSQL.equals(dbType) || M ybatisSqlConstant.O