mybatis拦截器应用实例整理

mybatis拦截器应用实例整理

前篇文字整理了拦截器的基本使用,本文整理和收集一些应用场景,方便后续查阅资料时参考和搜索。

1、处理模糊查询时的特殊字符

场景:使用MyBatis中的模糊查询时(数据库是mysql),当查询关键字中包括有_、\、%时,查询关键字失效。
比如,like查询中包含_时,查询结果为全部,like '%_%'和like '%%'查询结果一致,并不能查询出实际字段中包含_字符的结果。
主要解决方法:
将特殊字符做转义处理,比如like '%_%'查询转换为like ‘%\_%’。

特殊字符未处理处理后
_like '%_%'like '%\_%'
%like '%%%'like '%\%%'
\like '%\%'`like ‘%\%’

核心处理逻辑:

    //特殊字符转义
    private static String escapeChar(String before) {
        if (StringUtils.isNotBlank(before)) {
            before = before.replace("\\", "\\\\");
            before = before.replace("_", "\\_");
            before = before.replace("%", "\\%");
        }
        return before;
    }

需要注意的点:

  • 与其他拦截器的执行顺序,比如项目中如果使用了mybatis-plus、pagehelper及tk-mybatis等;特别是PageHelper其实经过了count和查询最终结果两步,这也是需要考虑的点。
  • 拦截器指定拦截方法的选择,需根据业务选择Executor、ParameterHandler、ResultSetHandler和StatementHandler接口中的一种。
  • 查询中使用了特殊的标签,比如<bind>,这类场景根据业务做对应处理。
  • 修改映射实体的参数值时,有时可以直接修改值,有时需要使用反射修改属性值。

参考资料:
MyBatis Plus之like模糊查询中包含有特殊字符

2、实现增删改查参数的加/解密

这个主要是针对项目中出现的一些客户敏感信息的处理,比如账号、手机号、身份证号、银行卡号这些需要加密落库,同时查询时需要解密读取或是按加密后返回。

参考资料:
通过MyBatis拦截器实现增删改查参数的加/解密

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值