前言:
本项目代码转了几个部门,多人参与,项目是硬上的服务, 单体项目添加了微服务组件,摇身一变微服务,上容器云平台。
项目中持久层有 tk-mybatis, mybatis-plus , 两个框架都是基于mybatis做的加强,引入的包极有可能是冲突的, 果不其然, 做冲突检查一片红。
代码中少部分是 plus的代码,稍加修改统一到tk, 问题解决。
正文:基于tk-mybatis开发配置加密解密功能 (mybatis-plus 大同小异,只改实体类对应字段注解即可)
1、mybatis配置说明
此处是全局配置(如果不需要所有相同类型字段都加密解密则不需要配置)
(1)对于typeHandler,如果你的字段类型和扩展的字段类型为equals关系,则只需要让你的typeHandler让Mybatis加载到即可,不需要使用注解,也不需要配置 Mapper.xml(适合于全库加密存储)。
( 2) 不需要配置全局的handler , 在你需要的地方显示申明 加解密的注解, 或者 mapper.xml 中配置 handler
2、自定义typeHandler ,定义数据库varchar 类型,java 中对应String 如下所示:
3、显示申明需要加密字段 ,指定自定义 typeHandler ,当然也可以在mapper.xml的配置文件中的resultMap、参数中进行配置使用。
mapper.xml 中配置:
<result property="ZYFZRYDDH" column="ZYFZRYDDH" jdbcType="VARCHAR" typeHandler="com.kqzz.busiServer.type.CryptTypeHandler"/>
总结:
开发主管要做好技术栈管理,非必要不多引入一个第三方包。可以考虑基于工具辅助实现。
有实有专门的maven插件和 checkstyle规则来作约束。我们之前尝试过。
- CheckStyle规则说明(全)其中有一条是不允许引入特定类型。这样就从根本上杜绝了。
- Maven插件也可以直接检查依赖。