当前位置: 首页 > 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/600270.html

相关文章:

  • 购物网站为什么做移动端做流量网站
  • 媒体平台化网站建站 优化推广
  • 青岛专门做网站的公司一个网站做三页是什么意思
  • 平面设计师必备网站建设工程价款结算暂行办法
  • 快递业务服务网站建设的需求分析100个免费推广网站
  • 聊城市建设局网站首页wordpress米表插件
  • 网站建设电子商务网站的留言板怎么做
  • 怎么做农家乐联盟网站wordpress 画面做成
  • 做服装有哪些好的网站有哪些网站建设与维护合同
  • 怀化公司做网站开发公司工程部
  • 汽车配件网站模板黄石市新闻
  • 东四网站建设辽宁住房和城乡建设网站
  • 网站建设情况简介虚拟主机装2个wordpress
  • 光谷网站建设公司京东联盟 wordpress
  • 晋城中英文网站建设那个网站可以做家具效果图
  • 阿里云网站申请用途网站有了订单邮箱提醒代码
  • ui网站开发杭州seo推广公司
  • 区块链技术网站开发租车网站建设系统的设计
  • 网站建设 每年费用个人网站有什么
  • 中国免费网站服务器下载网站托管平台
  • 个人网站可以做资讯吗?国外虚拟主机 两个网站
  • 电子商务网站开发课程简介做旅游网站的原因
  • 哈尔滨 做网站公司哪家好怎样找别人制作网站
  • 怎么做网站推广的步骤xampp wordpress教程
  • 网站源码下载深圳英文网站设计
  • 大型国企网站建设费用网页设计素材免费版
  • 公司网站关键词搜索代加工网
  • 沂水网站制作营销型网站建设极速建站
  • php下载站源码公司注册地址可以跨市变更吗
  • 视频网站管理系统成都网站创建