当前位置: 首页 > wzjs >正文

柴沟堡网站建设百度公司招聘

柴沟堡网站建设,百度公司招聘,在线制作图标免费,房屋装修设计app前言 当我们写项目的时候,要对隐私数据进行加密和解密操作,可以不用每次都手动去写加密解密的代码,可以用Mybatis的TypeHandler来解决。 TypeHandler 具体意思就是,当我们处理某些特定字段时,可以在这个类里面实现一…

前言

当我们写项目的时候,要对隐私数据进行加密和解密操作,可以不用每次都手动去写加密解密的代码,可以用Mybatis的TypeHandler来解决。

TypeHandler

具体意思就是,当我们处理某些特定字段时,可以在这个类里面实现一些方法,让Mybatis遇到这些特定字段可以自动运行处理。(不过使用之前要在application.properties文件里面加一个配置:mybatis.type-handlers-package=org.example.cqqtest.dao.handler)也就是你自己类型处理器路径

@MappedTypes(Encrypt.class)//指定该类型处理器处理的Java类
@MappedJdbcTypes(value = {JdbcType.VARCHAR})//指定该类型处理器处理的JDBC类型为VARCHAR
public class EncryptTypeHandler extends BaseTypeHandler<Encrypt> {private static final byte[] keys = "1234567890abcdef".getBytes();/**** @param ps 预编译语句* @param i 索引* @param parameter 要加密的数据* @param jdbcType 数据类型* @throws SQLException*///加密@Overridepublic void setNonNullParameter(PreparedStatement ps, int i, Encrypt parameter, JdbcType jdbcType) throws SQLException {if(parameter == null|| parameter.getValue() == null){ps.setString(i, null);return;}AES aes = SecureUtil.aes(keys);;ps.setString(i, aes.encryptHex(parameter.getValue()));}//解密@Overridepublic Encrypt getNullableResult(ResultSet rs, String columnName) throws SQLException {System.out.println("获取值得到的加密数据"+rs.getString(columnName));return decrypt(rs.getString(columnName));}@Overridepublic Encrypt getNullableResult(ResultSet rs, int columnIndex) throws SQLException {System.out.println("获取值得到的加密数据"+rs.getString(columnIndex));return decrypt(rs.getString(columnIndex));}@Overridepublic Encrypt getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {System.out.println("获取值得到的加密数据"+cs.getString(columnIndex));return decrypt(cs.getString(columnIndex));}private Encrypt decrypt(String value){if(!StringUtils.hasText(value)){return null;}return new Encrypt(SecureUtil.aes(keys).decryptStr(value));}
}

Encrypt

在@MappedTypes(Encrypt.class)这个注解中,括号里面的就是指定处理器要处理的Java类,当有的属性是Encrypt类型的时候,就会自动加密解密。

@Data
public class Encrypt {private String value;public Encrypt(String value) {this.value = value;}}

加密

以插入数据为例,手机号是要加密的数据,代码就可以这样写。

@Data
public class FindUserDo {private int id;private String password;private Encrypt phone;private String sex;
}
public AddUserDto addUser(AddUserParam user) {AddUserDo adduserDo = new AddUserDo();adduserDo.setName(user.getName());adduserDo.setPassword(DigestUtil.sha256Hex(user.getPassword()));adduserDo.setPhone(new Encrypt(user.getPhone()));adduserDo.setSex(user.getSex());userMapper.insertUser(adduserDo);AddUserDto addUserDto = new AddUserDto();addUserDto.setId(adduserDo.getId());return addUserDto;}

解密

 public FindUserDto getUser(int id) {FindUserDo findUserDo = userMapper.selectUser(id);FindUserDto findUserDto = new FindUserDto();findUserDto.setId(findUserDo.getId());//解密手机号findUserDto.setPhone(findUserDo.getPhone().getValue());findUserDto.setName(findUserDo.getName());findUserDto.setSex(findUserDo.getSex());return findUserDto;}

效果展示

最后,我们可以用postman来进行测试,看看效果

http://www.dtcms.com/wzjs/232407.html

相关文章:

  • 建设银行香港招聘网站北京网站优化常识
  • 做网站的需求文档格式微信引流推广怎么做
  • 给视频做特效的网站google search
  • 专业做网站哪家好抖音怎么运营和引流
  • 网站建设合并但与那个最佳磁力吧ciliba搜索引擎
  • 深圳外贸公司待遇怎么样乐云seo
  • 网站建站无锡小红书怎么做关键词排名优化
  • 荆门做网站nba最新消息
  • 创建网站需要注意什么南通做网站推广的公司
  • 做网站构建搜索引擎营销seo
  • 企业网站服务器少儿编程
  • 网站错误页面模板免费发布信息网网站
  • 做网站要会哪些软件推广平台免费b2b网站大全
  • 有一个网站叫浪什么百度如何添加店铺位置信息
  • 网站建设 最新软件今日国内热点新闻头条事件
  • vscode的网站开发配置semen
  • 招聘网站建设规划书搜索引擎营销的特征
  • 网站建设接单正规教育培训机构
  • 太原网站建设360淘宝权重查询入口
  • 招聘网站如何做薪酬报告简单的seo
  • 网站制作设计教程做百度推广
  • 常州模板建站哪家好郑州seo方案
  • 网站空间哪个比较好百度排行榜小说
  • 互联网骗局浏览网站做任务网店推广平台有哪些
  • 应用制作app软件整站优化是什么意思
  • 自适应网站的图做多大 怎么切seo招聘信息
  • 怎么用本机做服务器发布网站seo在线优化
  • 住房城乡建设部网站文件查询附近电脑培训班位置
  • 本地php网站搭建b站推广网站2024年
  • 宿迁市网站建设百中搜优化软件靠谱吗