来源:blog.csdn.net/weixin_615948031。SQL数据脱敏MYSQL(电话号码、身份证)数据脱敏的实现——CONCAT()、LEFT()、RIGHT()字符串函数的组合,具体实现见下文——CONCAT(str1,str2,...):返回结果为连接参数生成的字符串--LEFT(str,len):返回从字符串str开始的len最左边的字符--RIGHT(str,len):从字符串str开始,返回最右边len个字符——电话号码脱敏sql:SELECTmobilePhoneAS脱敏前电话号码,CONCAT(LEFT(mobilePhone,3),'*********')AS脱敏电话号码FROMt_s_user--ID号码脱敏sql:SELECTidcardAS身份证号码脱敏,CONCAT(LEFT(idcard,3),'****',RIGHT(idcard,4))AS脱敏身份证号码FROMt_s_user2.JAVA数据脱敏实现可参考:海强/sensitive-plushttps://gitee.com/strong_sea/...数据脱敏插件,目前支持地址脱敏、银行卡号脱敏、中文姓名脱敏、座机脱敏、身份证号脱敏、手机号脱敏、密码脱敏.您需要配置自己的规则。3、新作mybatis-mate-sensitive-jacksonmybatisplus可以测试使用,生产需要收费。根据定义的策略类型,对数据进行脱敏处理。当然,策略可以定制。#目前有packagemybatis.mate.strategy;publicinterfaceSensitiveType{StringchineseName="chineseName";StringidCard="idCard";字符串电话=“电话”;字符串移动=“移动”;字符串地址=“地址”;字符串电子邮件=“电子邮件”;StringbankCard="银行卡";Stringpassword="密码";StringcarNumber="carNumber";}Demo代码目录SpringBoot基础知识就不介绍了,推荐观看这个免费教程:https://github.com/javastacks/spring-boot-best-practice1,pom.xmlcom.baomidoumybatis-配合示例0.0.1-SNAPSHOT4.0.0mybatis-mate-sensitive-jacksonmysqlmysql-connector-java2、appliation.yml#DataSourceConfigspring:datasource:#驱动类-name:org.h2.Driver#schema:classpath:db/schema-h2.sql#data:classpath:db/data-h2.sql#url:jdbc:h2:mem:test#username:root#password:testdriver-class-name:com.mysql.cj.jdbc.Driverurl:jdbc:mysql://localhost:3306/mybatis_mate?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC用户名:root密码:123456#MybatisMate配置mybatis-mate:cert:#请添加微信wx153666purchaseauthorization,don'tgowhoringfornothing,startwithme!测试证书会失效,请勿正式环境使用grant:thisIsTestLicenselicense:as/bsBaSVrsA9FfjC/N77ruEt2/QZDrW+MHETNuEuZBra5mlaXZU+DE1ZvF8UjzlLCpH3TFVH3WPV+Ya7Ugiz1Rx4wSh/FK6Ug9lhos7rnsNaRB/+mR30aXqtlLt4dAmLAOCT56r9mikW+t1DDJY8TVhERWMjEipbqGO9oe1fqYCegCEX8tVCpToKr5J1g1V86mNsNnEGXujnLlEw9jBTrGxAyQroD7Ns1Dhwz1K4Y188mvmRQp9t7OYrpgsC7N9CXq1s1c2GtvfItHArkqHE4oDrhaPjpbMjFWLI5/XqZDtW3D+AVcH7pTcYZn6vzFfDZEmfDFV5fQlT3Rc+GENEg==#LoggerConfiglogging:level:mybatis.mate:debug3,Appliationstartupclasspackagemybatis.mate.sensitive.jackson;importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublicclassSensitiveJacksonApplication{//测试访问http://localhost:8080/info,http://localhost:8080/listpublicstaticvoidmain(String[]args){SpringApplication.run(SensitiveJacksonApplication.class,参数);}}4.配置类,自定义脱敏策略包mybatis.mate.sensitive.jackson.config;进口tmybatis.mate.databind.ISensitiveStrategy;importmybatis.mate.strategy.SensitiveStrategy;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;@ConfigurationpublicclassSensitiveStrategyConfig{/***注入脱敏策略*/@BeanpublicISensitiveStrategysensitiveStrategy(){//自定义testStrategy类型脱敏处理returnnewSensitiveStrategy().addStrategy("testStrategy",t->t+"***test***");}}5.业务类User,注解识别脱敏字段,选择脱敏策略包mybatis.mate.sensitive.jackson.entity;importlombok.Getter;importlombok.Setter;importmybatis.mate.annotation.FieldSensitive;importmybatis.mate.sensitive.jackson.config.SensitiveStrategyConfig;importmybatis.mate.strategy.SensitiveType;@Getter@SetterpublicclassUser{privateLongid;/***这里是自定义策略{@linkSensitiveStrategyConfig}初始化注入*/@FieldSensitive("testStrategy")privateStringusername;/***默认支持策略{@linkSensitiveType}*/@FieldSensitive(SensitiveType.mobile)privateStringmobile;@FieldSensitive(SensitiveType.email)privateStringemail;}UserControllerpackagemybatis.mate.sensitive.jackson.controller;导入mybatis.mate.databind.ISensitiveStrategy;导入mybatis.mate.databind.RequestDataTransfer;导入mybatis.mate.sensitive.jackson。entity.User;导入mybatis.mate.sensitive.jackson.mapper.UserMapper;导入mybatis.mate.strategy.SensitiveType;导入org.springframework.beans.factory.annotation.Autowired;导入org.springframework.web.bind.annotation。GetMapping;导入org.springframework.web.bind.annotation.RestController;导入javax.servlet.http.HttpServletRequest;导入java.util.HashMap;导入java.util.List;导入java.util.Map;@RestControllerpublicclassUserController{@AutowiredprivateUserMapperuserMapper;@Autowired私有ISensitiveStrategy敏感策略;//测试访问http://localhost:8080/info@GetMapping("/info")publicUserinfo(){returnuserMapper.selectById(1L);}//测试返回地图访问http://localhost:8080/map@GetMapping("/map")publicMapmap(){//测试嵌套对象脱敏MapuserMap=new哈希图<>();userMap.put("用户",userMapper.selectById(1L));userMap.put("测试",123);userMap.put("userMap",newHashMap(){{put("user2",userMapper.selectById(2L));put("test2","hichina");}});//手动调用策略脱敏userMap.put("mobile",sensitiveStrategy.getStrategyFunctionMap().get(SensitiveType.mobile).apply("15315388888"));返回用户地图;}//测试访问http://localhost:8080/list//不脱敏http://localhost:8080/list?skip=1@GetMapping("/list")publicListlist(HttpServletRequestrequest){if("1".equals(request.getParameter("skip"))){//跳过脱密处理RequestDataTransfer.skipSensitive();}returnuserMapper.selectList(null);}}UserMapperpackagemybatis.mate.sensitive.jackson.mapper;importcom.baomidou.mybatisplus.core.mapper.BaseMapper;importmybatis.mate.sensitive.jackson.entity.User;importorg.apache.ibatis.annotations.Mapper;@MapperpublicinterfaceUserMapperextendsBaseMapper{}6、测试GEThttp://localhost:8080/list[{"id":1,"username":"Jone***test***","mobile":"153******81","email":"t****@baomidou.com"},{"id":2,"username":"Jack***test***","mobile":"153******82","email":"t****@baomidou.com"},{"id":3,"username":"Tom***test***","mobile":"153******83","email":"t****@baomidou.com"}]GEThttp://localhost:8080/list?sk...[{"id":1,"username":"jone","mobile":"15315388881","email":"test1@baomidou.com"},{"id":2,"username":"Jack","mobile":"15315388882","email":"test2@baomidou.com"},{"id":3,"username":"Tom","mobile":"15315388883","email":"test3@baomidou.com"}]近期文章推荐:1.1000+Java面试题及答案(2022最新版)2.精彩!Java协程来了...3.SpringBoot2.x教程,太全面了!4.别写满屏的爆款类,试试装饰器模式,这才是优雅的方式!!5.《Java开发手册(嵩山版)》最新发布,赶紧下载吧!感觉不错别忘了点赞+转发哦!