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

晋中路桥建设集团有限公司网站5188关键词平台

晋中路桥建设集团有限公司网站,5188关键词平台,wordpress主题字体,seo批量建站方法White graces:个人主页 🙉专栏推荐:Java入门知识🙉 🐹今日诗词:日暮酒醒人已远,满天风雨下西楼🐹 ⛳️点赞 ☀️收藏⭐️关注💬卑微小博主🙏 ⛳️点赞 ☀️收藏⭐️关注&#x1f4…
White graces:个人主页

🙉专栏推荐:Java入门知识🙉

🐹今日诗词:日暮酒醒人已远,满天风雨下西楼🐹


⛳️点赞 ☀️收藏⭐️关注💬卑微小博主🙏

⛳️点赞 ☀️收藏⭐️关注💬卑微小博主🙏


BaseTypeHandler

  • 作用:数据库类型与 Java 类型间的双向转换器
  • 作用范围:位于 JDBC 驱动层与 DAO 映射层之间
  • 典型场景:String类型转换成varchar类型

这时候就有大聪明询问, JDBC操作数据库不是可以自动映射成相应的类型吗, 为什么还需要

BaseTypeHandler呢?

维度默认映射BaseTypeHandler转换
本质MyBatis内置的自动化类型匹配机制用户可扩展的自定义类型转换基类
触发条件基于Java类型与JDBC类型的预定义匹配规则显式声明绑定特定类型
实现层级框架原生支持(无需编码)需继承BaseTypeHandler并实现核心方法
覆盖范围基础类型(String、Integer、Date等)支持任意复杂类型(JSON、枚举、加密数据等)

很明显BaseTypeHandler有更高的自由度, 我们可以在转换的过程进行一些操作
比如敏感数据先 自动加密在存储, 获取数据的时候又可以 自动解密
传统方法:  需要手动调用加密方法, 加密后再存储, 解密时也需要手动调用解密方法

转换器方法: BaseTypeHandler检测到了要转换的类型       
               在类型转换的过程中自动对数据进行解密和解密, 省去了手动调用的过程

比如现在有三个数据:  姓名(String)  邮箱(String)  手机号(String)

它们都是String类型, 由于手机号比较敏感, 我们需要对手机号先加密再存储

这时候就可以借助BaseTypeHandler双向转换器, 在DAO层进行自动加密解密

步骤一: 

将手机号的String类型向上封装一层, 加密时使用Encrypt类型, 就不会影响其他String类型了

public class Encrypt {// 将手机号的String类型向上封装一层, 加密时使用Encrypt类型, 就不会影响其他String类型了@Getterprivate final String values;public Encrypt(String values) {this.values = values;}}

步骤二: 继承BaseTypeHandler, 重写接口, 添加类型映射过程中额外的操作(如捕捉到相应的类型自动进行加密解密)

@MappedTypes(Encrypt.class)            // 转换前的类型
@MappedJdbcTypes(JdbcType.VARCHAR)     // 转换后要存储在数据库的类型
public class EncrptBaseTypeHandler extends BaseTypeHandler<Encrypt> {// 设置加密密钥private static final byte[] KEY = "12345678abcdefgh".getBytes(StandardCharsets.UTF_8);// 设置转换后的值, 将转换后的值映射到数据库中@Overridepublic void setNonNullParameter(PreparedStatement ps, int i, Encrypt parameter, JdbcType jdbcType) throws SQLException {if (parameter == null || parameter.getValues() == null) {ps.setString(i, null);return;}// 加密ps.setBytes(i, SecureUtil.aes(KEY).encrypt(parameter.getValues()));}// 获取数据的值, 并转换成Java类型, 这个过程可以添加自动解密的步骤@Overridepublic Encrypt getNullableResult(ResultSet rs, String columnName) throws SQLException {return decrpt(rs.getString(columnName));}// 获取数据的值, 并转换成Java类型@Overridepublic Encrypt getNullableResult(ResultSet rs, int columnIndex) throws SQLException {return decrpt(rs.getString(columnIndex));}// 获取数据的值, 并转换成Java类型@Overridepublic Encrypt getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {return decrpt(cs.getString(columnIndex));}// 解密: 将数据库加密的String类型解密成原本的Encrypt类型, 最后再转换成无加密的String的类型private static Encrypt decrpt(String encryptMessage) {if (encryptMessage == null) {return null;}return new Encrypt(SecureUtil.aes(KEY).decryptStr(encryptMessage));}}

美图分享

✨🎆谢谢你的阅读和耐心!祝愿你在编程的道路上取得更多的成功与喜悦!"🎆✨🎄

⭐️点赞收藏加关注,学习知识不迷路⭐️

🎉✔️💪🎉✔️💪🎉✔️💪🎉✔️💪🎉

👍😏⛳️点赞☀️收藏⭐️关注😏👍

👍😏⛳️点赞☀️收藏⭐️关注😏👍

👍😏⛳️点赞☀️收藏⭐️关注😏👍

🙆‍♂️🙆‍♂️🙆‍♂️🙆‍♂️🙆‍♂️🙆‍♂️🙆‍♂️🙆‍♂️🙆‍♂️🙆‍♂️🙆‍♂️🙆‍♂️🙆‍♂️

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

相关文章:

  • 网站开发实训心得培训学校
  • 网站制作公司成都石首seo排名
  • wordpress详细教程seo网站推广如何做
  • wordpress小说站数据库seog
  • 做网站怎么认证微博seo
  • 网站开发的基本流程图精准网站seo诊断报告
  • 网站建设与web前端区别公众号推广方法
  • 连云港品牌网站建设安卓aso优化工具
  • 群晖系统可以做网站吗网页制作作业100例
  • 好用心 做网站送女友社交网络推广方法有哪些
  • 橙子建站三分钟搭建落地页接推广怎么收费
  • 如何申请一个网站朋友圈推广平台
  • 自己创业做网站济南百度
  • 做代理的项目在哪个网站接外包网站
  • 做网站怎样做才有百度快照品牌网站设计
  • 怎么做跳转不影响原网站排名宁德市蕉城区
  • 网站建设 网址导航淘宝推广运营
  • 《电子商务网站开发》实验报告如何在百度上开店铺
  • 网页设计类网站什么是网络整合营销
  • 有网站如何做app软文吧
  • 体育网站的制作哪里可以做宁波seo外包快速推广
  • 海洋网络网站建设b站视频推广网站400
  • 焦作公司做网站营销型网站制作成都
  • 做自己的网站要多少钱推广软文是什么
  • 如何个人电脑做网站大数据分析网站
  • 网上商城项目设计方案免费网站排名优化在线
  • 私企建筑公司排名公众号排名优化软件
  • 酒店网站建设方案ppt网站排名优化软件
  • 一般网站banner做多高提高网站排名软件
  • 网站制作报价明细表关键词批量调词软件