补充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> {

    @Override
    public String getSetValue(DictColumn dictColumn) {
        return null != dictColumn ? dictColumn.getValue() : null;
    }

    @Override
    public 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;
    }
}
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值