方案:使用 mybatis 的插件功能,修改参数,将需要加密的字段加密后再执行。上线后清洗数据,将历史明文数据刷为密文。
问题:历史数据量比较大,在刷数据时存在这样一段过度时期是明文和密文同时存在的(旧数据是明文,新写入的数据是密文),手机号在业务上又是有精确查询的需求,很多 SQL 都有 mobile = 'xxxxxx' 的查询条件,在过度时期也要保证这些 SQL 能查到正确的数据,目前想到的办法是用 mybatis 的插件修改 SQL ,将 mobile = '明文' 改写成 mobile in ('明文', '密文'),等过渡时期结束后再去掉这个插件。那么问题来了,这样的 SQL 改写需求有没有什么方便快捷的实现方案呢?