补充RequestAttribute通用工具类

补充https://blog.csdn.net/qq_37148232/article/details/138303873?spm=1001.2014.3001.5501
通用工具类:

@SuppressWarnings("ALL")
public class Share {public static <T> void set(String key, T value) {HttpServletRequest request = ZYRequestUtils.getRequest();if (null != request && null != key && null != value) {request.setAttribute(key, value);}}public static <T> T get(String key, Class<T> aClass) {HttpServletRequest request = ZYRequestUtils.getRequest();if (null == request) {return null;}if (null == key) {return null;}Object attribute = request.getAttribute(key);return null != attribute ? (T) attribute : null;}public static <T> List<T> getList(String key, Class<T> aClass) {HttpServletRequest request = ZYRequestUtils.getRequest();if (null == request) {return null;}if (null == key) {return null;}Object attribute = request.getAttribute(key);return null != attribute ? (List<T>) attribute : new ArrayList<>();}public static <T> Map<String, T> getMap(String key, Class<T> aClass) {HttpServletRequest request = ZYRequestUtils.getRequest();if (null == request) {return null;}if (null == key) {return null;}Object attribute = request.getAttribute(key);return null != attribute ? (Map<String, T>) attribute : new HashMap<>();}public static void remove(String key) {HttpServletRequest request = ZYRequestUtils.getRequest();if (null != request) {request.removeAttribute(key);}}
}

对字典类型处理器的一个小小改造。查询集合时,让相同的字典对象不重复查询缓存。且相同的字典属性指向同一个对象。对于字典字段较多的(比如用户),可以减少对象的创建数量。(算是很无聊的一个改造了)。

public class DictTypeHandler extends MyTypeHandler<DictColumn> {@Overridepublic String getSetValue(DictColumn dictColumn) {return null != dictColumn ? dictColumn.getValue() : null;}@Overridepublic DictColumn buildResultModel(String dictValue, String columnName) {if (ZYStrUtils.isAnyNull(dictValue, columnName)) {return new DictColumn();}String dictCode = columnName.toLowerCase();String key = dictCode + dictValue;DictColumn dictColumn = Share.get(key, DictColumn.class);if (null == dictColumn) {dictColumn = new DictColumn();dictColumn.setDictCode(dictCode);dictColumn.setValue(dictValue);// 该行代码会触发读取redis缓存dictColumn.setLabel(ZYDictHelper.dictName(dictCode, dictValue));Share.set(key, dictColumn);}return dictColumn;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/9513.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Mysql】——收银查询与退货

&#x1f4bb;博主现有专栏&#xff1a; C51单片机&#xff08;STC89C516&#xff09;&#xff0c;c语言&#xff0c;c&#xff0c;离散数学&#xff0c;算法设计与分析&#xff0c;数据结构&#xff0c;Python&#xff0c;Java基础&#xff0c;MySQL&#xff0c;linux&#xf…

Java并发编程:Kilim协程框架

文章目录 一、介绍1、Kilim协程框架解析2、Kilim协程框架应用 一、介绍 Kilim是一个专为Java设计的轻量级协程框架&#xff0c;它通过字节码操纵技术实现了轻量级的协程&#xff0c;为Java开发者提供了更为灵活的并发编程选项。以下是关于Kilim协程框架的解析与应用&#xff1…

struct和union大小计算规则

Union 一&#xff1a;联合类型的定义 联合也是一种特殊的自定义类型&#xff0c;这种类型定义的变量也包含一系列的成员&#xff0c;特征是这些成员公用同一块空间&#xff08;所以联合也叫共用体&#xff09; 比如&#xff1a;共用了 i 这个较大的空间 二&#xff1a; 联合的…

【程序员侠】李飞往事之wifi恶魔

程序员侠李飞是一名技术高超的年轻程序员&#xff0c;他在城市中打击各种网络犯罪活动&#xff0c;保护市民的网络安全。一天&#xff0c;他接到了一个任务&#xff0c;说是城市中有一个邪恶的wifi恶魔正在肆虐&#xff0c;许多人的个人信息被盗取&#xff0c;银行账户被盗刷&a…

AI怎么把图形分割下来

1 画一个图形 2 画一条直线分割 用直线段工具&#xff0c;画一条直线 3 分割操作 用 直接选择工具&#xff0c;先选中直线&#xff0c;按shift键&#xff0c;再选中矩形&#xff0c;把他两都选上 路径查找器&#xff0c;点分割(路径查找器面板如果没有&#xff0c;在窗口 菜单…

接口自动化框架篇:接口框架中的日志记录封装!

接口自动化框架中的日志记录是一个重要的环节&#xff0c;它能帮助我们追踪接口的执行情况、调试问题、分析测试结果等。通过规范的日志记录&#xff0c;我们可以更好地管理和维护接口自动化测试代码。 以下是一个从0到1的详细规范&#xff0c;来进行接口框架中的日志记录封装…

Java方法和数组

方法 Java中的方法就是c语言中的函数。 方法的定义 定义格式如下 修饰符 返回值 方法名([参数列表]){代码块[return 返回值;] } //方括号[]括起来代表可以没有&#xff0c;不是必须有的方法名采用小驼峰命名&#xff08;就是有多个单词&#xff0c;第一个单词首字母小写其…

酷柚易汛ERP源码部署/售后更新/搭建/上线维护

一款基于FastAdminThinkPHPLayui开发的ERP管理系统&#xff0c;帮助中小企业实现ERP管理规范化&#xff0c;此系统能为你解决五大方面的经营问题&#xff1a;1.采购管理 2.销售管理 3.仓库管理 4.资金管理 5.生产管理&#xff0c;适用于&#xff1a;服装鞋帽、化妆品、机械机电…

Vue3自定义指令封装-按钮权限控制v-permission、hasPermissions

背景&#xff1a;平常所接触到的系统权限控制&#xff0c;大部分都是菜单、路由级别的控制&#xff0c;但后台管理系统中&#xff0c;很多操作都是与职责和角色挂钩的&#xff0c;同样一个列表&#xff0c;不同人的操作列并不都一样&#xff0c;有些页面存在一些含有重要数据的…

B+树(B+ Tree)

B树&#xff08;B Tree&#xff09;是一种对B树&#xff08;B-Tree&#xff09;的改进版本&#xff0c;它在数据库系统和文件系统中作为索引结构得到了广泛的应用&#xff0c;特别是在磁盘存储的场景下。B树保留了B树的基本特征&#xff0c;如自平衡、多路分支等&#xff0c;但…

excel中怎么跳转到指定的单元格?

也许你会有这样的需求&#xff0c;如A1单元格中显示B100这种单元格地址&#xff0c;怎么做以点一下就跳转到B100&#xff1f; 一、设置公式 B1HYPERLINK("#"&MID(CELL("FILENAME",A1),FIND("]",CELL("FILENAME",A1))1,99)&&…

java-函数式编程-jdk

背景 函数式接口很简单&#xff0c;但是不是每一个函数式接口都需要我们自己来写jdk 根据 有无参数&#xff0c;有无返回值&#xff0c;参数的个数和类型&#xff0c;返回值的类型 提前定义了一些通用的函数式接口 IntPredicate 参数&#xff1a;有一个&#xff0c;类型是int类…

VSCode(安装)

前言 VSCode&#xff08;全称&#xff1a;Visual Studio Code&#xff09;是一款由微软开发且跨平台的免费源代码编辑器。该软件支持语法高亮、代码自动补全&#xff08;又称 IntelliSense&#xff09;、代码重构、查看定义功能&#xff0c;并且内置了命令行工具和 Git …

Redis面试高频问题

什么是缓存穿透 ? 怎么解决 ? 缓存穿透是指查询一个一定不存在的数据&#xff0c;如果从存储层查不到数据则不写入缓存&#xff0c;这将导致这个不存在的数据每次请求都要到数据库去查询&#xff0c;可能导致数据库挂掉。这种情况大概率是遭到了攻击。解决方案的话&#xff0…

C++ 实现一个不能被copy的类

文章目录 实现一个不能被copy的类1.先实现父类2.代码实现 小结 实现一个不能被copy的类 1.先实现父类 一个类不能被copy&#xff0c;首先肯定是构造函数没有。其次&#xff0c;拷贝构造不能有赋值构造函数也不能有 基于这三点&#xff0c;就容易实现了。下边看看代码。 2.代…

spring开发问题总结(持续更新)

开始 最近在做项目的时候&#xff0c;总遇到一些大小不一&#xff0c;奇形怪状的问题。 现在终于有时间来总结一下遇到的问题&#xff0c;以备复习之用。 以下提到的问题经过简化&#xff0c;不代表任何项目代码或问题。 问题1&#xff1a;未完成任务状态搜索结果有误&#x…

【贪心算法】Leetcode 134. 加油站【中等】

加油站 在一条环路上有 n 个加油站&#xff0c;其中第 i 个加油站有汽油 gas[i] 升。 你有一辆油箱容量无限的的汽车&#xff0c;从第 i 个加油站开往第 i1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发&#xff0c;开始时油箱为空。 给定两个整数数组 gas 和…

【Android】自定义View不显示的一种问题

需求 在自定义View里面添加一种颜色表示某个数据到达了某个状态 问题 颜色没有显示 问题分析 在代码中定义一种颜色和画笔 private int wathetBlue;private Paint backgroundWathetBlue;在init方法里面初始化 wathetBlue Color.argb(205, 165, 209, 254);backgroundWat…

5月游戏市场迎来新的体验,网易两款游戏重磅出炉

易采游戏网5月9日消息&#xff0c;随着科技的飞速发展&#xff0c;手机游戏已经成为人们休闲娱乐的重要方式。在这个领域&#xff0c;网易作为国内领先的游戏开发商&#xff0c;一直致力于为玩家带来高品质的游戏体验。近日&#xff0c;网易携手国际大厂Square Enix&#xff0c…