zoukankan      html  css  js  c++  java
  • map实现缓存

    测试结果

    接口地址数据库表设计参照

    数据库表

    ConfigPool.java

    package com.alphajuns.ssm.util;
    
    import com.alphajuns.ssm.pojo.Config;
    import com.alphajuns.ssm.service.ConfigService;
    
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    public class ConfigPool {
    
        /**
         * 参数表的缓存map
         */
        private static AbstractTimeCachedObject cachedConfigPool = new AbstractTimeCachedObject(
                AbstractTimeCachedObject.CONFIG_CACHEDTIME) {
            @Override
            public Object refreshCachedObject(Object params) {
                return new HashMap<String, Config>();
            }
        };
    
        /**
         *
         * <p>
         * Description: 得到缓存中的对象
         * </p>
         *
         * @param enforce boolean
         * @return Map Map
         */
        @SuppressWarnings("unchecked")
        public static Map<String, Config> getCachedConfigPool(boolean enforce) {
            return (Map<String, Config>) cachedConfigPool.getCachedObject(null, enforce);
        }
    
        /**
         *
         * <p>
         * Description: 得到参数
         * </p>
         *
         * @param configKey String
         * @return Config Config
         */
        public static Config getGroupConfig(String group,String configKey) {
            Map<String, Config> configMap;
            configMap = getCachedConfigPool(false);
            System.out.println("获取到的map:" + System.identityHashCode(configMap));
            Config config;
            config = configMap.get(group+"."+configKey);
            if (EmptyUtil.isEmpty(config)) {
                ConfigService configService = null;
                configService = (ConfigService) com.alphajuns.ssm.util.SpringContextUtil.getBean("configServiceImpl");
                Map<String,String> map =new HashMap<String,String>();
                map.put("configGroup", group);
                map.put("configKey", configKey);
                config = configService.queryConfigByGroupKey(map);
                configMap.put(group+"."+configKey, config);
            }
            return config;
        }
        /**
         * 通过key得到值
         * @param configKey
         * @return
         */
        public static String getConfigValue(String configKey){
            String value = "";
            Config config = getGroupConfig(null,configKey);
            if(config!=null){
                value = config.getConfigValue();
            }
            return value;
        }
    
        /**
         * 通过group,key得到值
         * @param configKey
         * @return
         */
        public static String getConfigValue(String group, String configKey){
            String value = "";
            Config config = getGroupConfig(group,configKey);
            if(config!=null){
                value = config.getConfigValue();
            }
            return value;
        }
    
        public static List<Map<String,?>> getConfigsByGroup(String group){
            ConfigService configService = null;
            configService = (ConfigService) com.alphajuns.ssm.util.SpringContextUtil.getBean("configServiceImpl");
            Map<String,Object> queryConfigMap = new HashMap<String,Object>();
            queryConfigMap.put("configGroup", group);
            List<Map<String,?>> configList = configService.queryConfigListByGroup(queryConfigMap);
            return configList;
        }
    
    }
    

     AbstractTimeCachedObject.java

    package com.alphajuns.ssm.util;
    
    public abstract class AbstractTimeCachedObject {
        /**
         *
         */
        private static final long MILLS_PER_MINTUE = 60 * 1000;
        /**
         * CONFIG_CACHEDTIME
         */
        public static final int CONFIG_CACHEDTIME = 30;
        /**
         *
         */
        protected long cachedMinutes = 5L;
        /**
         *
         */
        private long expiredTimeSlot = 0;
        /**
         *
         */
        private Object cachedObject = null;
    
        /**
         * <p>Description: AbstractTimeCachedObject</p>
         */
        public AbstractTimeCachedObject() {
        }
    
        /**
         * <p>Description: AbstractTimeCachedObject</p>
         * @param minutes minutes
         */
        public AbstractTimeCachedObject(int minutes) {
            this.cachedMinutes = minutes;
        }
    
        public final boolean isExpired() {
            return (System.currentTimeMillis() > this.expiredTimeSlot);
        }
    
        /**
         * <p>Description: getCachedObject</p>
         * @param params params
         * @param enforce enforce
         * @return Object
         */
        public final synchronized Object getCachedObject(Object params, boolean enforce) {
            if (enforce || isExpired()) {
                setCachedObject(refreshCachedObject(params));
            }
    
            return this.cachedObject;
        }
    
        /**
         * <p>Description: getCachedObject</p>
         * @param params params
         * @return Object
         */
        public final Object getCachedObject(Object params) {
            return getCachedObject(params, false);
        }
    
        /**
         * <p>Description: setCachedObject</p>
         * @param cachedObject cachedObject
         */
        public final void setCachedObject(Object cachedObject) {
            this.cachedObject = cachedObject;
            this.expiredTimeSlot = System.currentTimeMillis() + this.cachedMinutes * MILLS_PER_MINTUE;
        }
    
        /**
         * <p>Description: refreshCachedObject</p>
         * @param params params
         * @return Object
         */
        public abstract Object refreshCachedObject(Object params);
    }
    

     Config.java

    package com.alphajuns.ssm.pojo;
    
    public class Config {
    
        private String configGroup;
        /**
         * 参数键
         */
        private String configKey;
    
        /**
         * 参数值
         */
        private String configValue;
    
        /**
         * 描述
         */
        private String description;
    
        /**
         *
         * <p>
         * 总数: TODO
         * </p>
         *
         */
        private int total;
    
        public String getConfigKey() {
            return this.configKey;
        }
        public void setConfigKey(String configKey) {
            this.configKey = configKey;
        }
        public String getConfigValue() {
            return this.configValue;
        }
        public void setConfigValue(String configValue) {
            this.configValue = configValue;
        }
        public String getDescription() {
            return this.description;
        }
        public void setDescription(String description) {
            this.description = description;
        }
        public int getTotal() {
            return this.total;
        }
        public void setTotal(int total) {
            this.total = total;
        }
        public String getConfigGroup() {
            return configGroup;
        }
        public void setConfigGroup(String configGroup) {
            this.configGroup = configGroup;
        }
        public String toString(){
            return "group:"+this.configGroup+",key:"+this.configKey+",value:"+this.configValue;
        }
    
    }
    

     ConfigService.java

    package com.alphajuns.ssm.service;
    
    import com.alphajuns.ssm.pojo.Config;
    
    import java.util.List;
    import java.util.Map;
    
    public interface ConfigService {
    
        /**
         * search key
         * @param configKey
         * @return
         */
        public Config queryConfigByKey(String configKey);
        /**
         * 通过group 和key搜索
         * @param queryConfigMap
         * @return
         */
        public Config queryConfigByGroupKey(Map<String,?> queryConfigMap);
        /**
         * queryConfigListByGroup
         * @param queryConfigMap
         * @return
         */
        public List<Map<String,?>> queryConfigListByGroup(Map<String,?> queryConfigMap);
    
        /**
         *
         * @Description 查询二期
         * @author fanj
         * @date 2019年11月20日
         * @param queryConfigMap
         * @return
         */
        public List<Map<String,?>> queryTpmeConfigListByGroup(Map<String,?> queryConfigMap);
    
    }
    

     ConfigServiceImpl.java

    package com.alphajuns.ssm.service.impl;
    
    import com.alphajuns.ssm.mybatis.ConfigMapper;
    import com.alphajuns.ssm.pojo.Config;
    import com.alphajuns.ssm.service.ConfigService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    import java.util.List;
    import java.util.Map;
    
    @Service
    public class ConfigServiceImpl implements ConfigService {
    
        @Autowired
        private ConfigMapper configMapper;
    
    
        @Override
        public Config queryConfigByKey(String configKey) {
            // TODO Auto-generated method stub
            return configMapper.queryConfigByKey(configKey);
        }
    
        public Config queryConfigByGroupKey(Map<String,?> queryConfigMap){
            return configMapper.queryConfigByGroupKey(queryConfigMap);
        }
    
        public List<Map<String,?>> queryConfigListByGroup(Map<String,?> queryConfigMap){
            return configMapper.queryConfigListByGroup(queryConfigMap);
        }
    
        @Override
        public List<Map<String, ?>> queryTpmeConfigListByGroup(Map<String, ?> queryConfigMap) {
            return configMapper.queryTpmeConfigListByGroup(queryConfigMap);
        }
    
    }
    

     ConfigMapper.java

    package com.alphajuns.ssm.mybatis;
    
    import com.alphajuns.ssm.pojo.Config;
    import org.apache.ibatis.annotations.Param;
    
    import java.util.List;
    import java.util.Map;
    
    public interface ConfigMapper {
    
        public abstract Config queryConfigByKey(@Param("configKey") String configKey);
    
        public abstract Config queryConfigByGroupKey(Map<String,?> queryConfigMap);
    
        public abstract List<Map<String,?>> queryConfigListByGroup(Map<String,?> queryConfigMap);
    
        public abstract List<Map<String, ?>> queryTpmeConfigListByGroup(Map<String, ?> queryConfigMap);
    
    }
    

     ConfigMapper.xml

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
    <mapper namespace="com.alphajuns.ssm.mybatis.ConfigMapper" >
        <resultMap id="BaseResultMap" type="com.alphajuns.ssm.pojo.Config" >
            <id column="config_key" property="configKey" jdbcType="VARCHAR" />
            <result column="config_group" property="configGroup" jdbcType="VARCHAR" />
            <result column="config_value" property="configValue" jdbcType="VARCHAR" />
            <result column="description" property="description" jdbcType="VARCHAR" />
        </resultMap>
        <select id="queryConfigByKey" resultMap="BaseResultMap" parameterType="java.lang.String" >
        select T.config_key,
               T.config_value,
               T.description
          from CONFIG T
        where  t.config_key = #{configKey,jdbcType=VARCHAR}
      </select>
        <select id="queryConfigByGroupKey" resultMap="BaseResultMap" parameterType="map" >
            select T.config_key,
            T.config_value,
            T.config_group,
            T.description
            from CONFIG T
            where  t.config_key = #{configKey,jdbcType=VARCHAR}
            <choose>
                <when test="configGroup!=null and configGroup!=''">
                    and T.config_group=#{configGroup,jdbcType=VARCHAR}
                </when>
                <otherwise>
                    and t.config_group is null or t.config_group=''
                </otherwise>
            </choose>
        </select>
    
        <select id="queryConfigListByGroup" resultType="map" parameterType="java.lang.String" >
        select T.config_group,
               T.config_key,
               T.config_value,
               T.description
          from CONFIG T
        where  t.config_group = #{configGroup,jdbcType=VARCHAR}
      </select>
    
        <select id="queryTpmeConfigListByGroup" resultType="map" parameterType="java.lang.String" >
            select T.config_group,
            T.config_key,
            T.config_value,
            T.description
            <!-- 这里查询配置,拼接一个config_key、config_value返回 fanj 20191120 -->
            ,
            (T.config_value||T.config_key) AS CONFIG_VALUE_AND_CONFIG_KEY
            from CONFIG T
            where  t.config_group = #{configGroup,jdbcType=VARCHAR}
        </select>
    </mapper>
  • 相关阅读:
    南阳779
    南阳599
    南阳484
    margin叠加相邻两个元素的上下margin是叠加在一起
    margin
    padding
    css05 字体以及行间距
    mysql相似于oracle的to_char() to_date()方法
    sqlite两表更新update
    SQL查找重复项目
  • 原文地址:https://www.cnblogs.com/alphajuns/p/13173624.html
Copyright © 2011-2022 走看看