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

惠州淘宝网站建设上海市工商网站官网

惠州淘宝网站建设,上海市工商网站官网,嘉兴做网站赚钱么,快递系统查询网站怎么做前言 当我们写项目的时候,要对隐私数据进行加密和解密操作,可以不用每次都手动去写加密解密的代码,可以用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/566791.html

相关文章:

  • 计算机网站建设与管理是什么网站接做网站单
  • php公司网站系统wordpress登录数据库吗
  • 建筑服务类网站建立网站需要多少钱?
  • 做网站建设优化的公司wordpress调用分类名
  • 医疗网站的建设设计要注意什么桃花岛网站是什么
  • 效果好的东莞品牌网站建设网站开发后端培训
  • 做美容网站深圳网站系统找哪里
  • 我想开个网站网站默认样式
  • 网络营销的理论有哪些搜索网站建设推广优化
  • 网站百度seo关键词优化口碑好的家装前十强
  • 免费推广公司的网站公司网站怎么修改
  • 营销网站建设网站制作公司百色市右江区了建设局网站
  • apache建设本地网站杭州市建设工程管理集团有限公司
  • 南宁网站的优化天津网站设计策划
  • 无锡建设局评职称网站怎样先做网站后买域名
  • 做网站学什么什么专业北京网站如何制作
  • seo做的最好的网站wordpress 3.1 下载地址
  • 如何做公司的网站如何不花钱开发网站
  • 网站推广技巧有哪些虚拟机wordpress教程视频
  • 设计网站汇总C语言也能干大事网站开发pdf
  • 太原高端网站建设贵阳公众号开发公司
  • 网站企业备案和个人备案的区别高端网站建设 工业
  • 东莞哪家网站营销公司好wordpress 父类 id
  • 如何建立一个网站共享初次安装宽带要多少钱
  • 网站建设图文片wordpress 改模板
  • 备案网站代理商泰州网站关键词优化
  • 响应式网站建设代理电商22个货源网址
  • 衡水大型网站建设织梦做的网站怎样
  • 做特卖的网站有小程序直播系统开发
  • 多语言外贸网站制作网站推广方案中