redis连接工具类

news/2024/11/20 15:38:51/

基本连接功能工具类:

public class RedisUtils {@Resourceprivate RedisTemplate<Object, Object> redisTemplate;public <E> void set(String key, E value) {redisTemplate.opsForValue().set(key, value);}public Boolean del(String key) {return redisTemplate.delete(key);}public <E> E getSingle(String key, Class<E> cls) {Object res = redisTemplate.opsForValue().get(key);return cast(res, cls);}public <E> List<E> getList(String key, Class<E> cls) {Object res = redisTemplate.opsForValue().get(key);return castList(res, cls);}public Object get(String key) {Object res = redisTemplate.opsForValue().get(key);return res;}public String getString(String key) {Object resObject = redisTemplate.opsForValue().get(key);
//        if(ObjectUtil.)String res = String.valueOf(redisTemplate.opsForValue().get(key));return res;}public Boolean checkIsRedis() {try {this.set("test", "test");if (StringUtil.isNotEmpty(this.getString("test"))) {return true;} else {return false;}} catch (Exception e) {return false;}}@SuppressWarnings("unchecked")private static <T> T cast(Object obj, Class<T> cls) {return (T) obj;}@SuppressWarnings("unchecked")private static <T> List<T> castList(Object obj, Class<T> cls) {return (List<T>) obj;}
}

多功能工具类:


public class ReflectUtil {/*** 获取字段对应值,并转为String类型,空值返回空字符串** @param fieldName* @param obj* @return*/public static synchronized String getStringValue(String fieldName, Object obj) throws ReflectiveOperationException {Object objectValue = getValueByGetter(fieldName, obj);if (objectValue == null) {return "";}String result = objectValue.toString();//如果类型为BigDecimal,去掉末尾的0if (objectValue instanceof BigDecimal) {BigDecimal value = (BigDecimal) objectValue;value = value.stripTrailingZeros();result = value.toPlainString();} else if (objectValue instanceof Date) {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");result = sdf.format((Date) objectValue).replace(" 00:00:00", "");}return result.trim();}public static Object getValueByGetter(String fieldName, Object obj) throws ReflectiveOperationException {Method getter = getGetter(fieldName, obj.getClass());if (getter != null) {return getter.invoke(obj);}return null;}public static Object setValueBySetter(String fieldName, Object obj) throws ReflectiveOperationException {Method setter = getSetter(fieldName, obj.getClass());if (setter == null) {throw new ReflectiveOperationException("没有set方法");}return setter.invoke(obj);}/*** 获取get方法** @param fieldName* @param cls* @return*/public static Method getGetter(String fieldName, Class<?> cls) {for (Method method : cls.getMethods()) {if (method.getName().equalsIgnoreCase("get".concat(fieldName)) && method.getParameterTypes().length == 0) {return method;}}return null;}/*** 获取set方法** @param fieldName* @param cls* @return*/public static Method getSetter(String fieldName, Class<?> cls) {for (Method method : cls.getMethods()) {if (method.getName().equalsIgnoreCase("set".concat(fieldName)) && method.getParameterTypes().length == 0) {return method;}}return null;}/*** 通过属性名获取Field对象** @param fieldName* @param cls* @return*/public static synchronized Field getFieldByName(String fieldName, Class<?> cls) {Field[] fields = cls.getDeclaredFields();for (Field field : fields) {if (field.getName().equals(fieldName)) {return field;}}if (cls.getSuperclass() != null) {return getFieldByName(fieldName, cls.getSuperclass());}return null;}//    /**
//     * 通过属性名获取Field对象
//     *
//     * @param cls
//     * @return
//     */
//    public static synchronized Field getField(Class<?> cls) {
//        Field[] fields = cls.getDeclaredFields();
//        Field f = null;
//        Object paramValue;
//        boolean isNotNull = false;
//        for (Field field : fields) {
//            try {
//                //设置可读写权限
//                field.setAccessible(true);
//
//                if (ObjectUtil.isNotEmpty(paramValue)) {
//                    f = field;
//                    isNotNull = true;
//                    break;
//                }
//            } catch (IllegalAccessException e) {
//                e.printStackTrace();
//            }
//            return field;
//        }
//        if (isNotNull) {
//            return f;
//        }
//        return null;
//    }/*** 通过对象.class获取所有Fields,包括父类** @param cls* @return*/public static List<Field> listFields(Class<?> cls) {Field[] fs = cls.getDeclaredFields();List<Field> fields = new ArrayList<>(Arrays.asList(fs));if (cls.getSuperclass() != null) {fields.addAll(listFields(cls.getSuperclass()));}return fields;}public static boolean fieldExist(String fieldName, Class<?> cls) {return getFieldByName(fieldName, cls) != null;}
}

 


http://www.ppmy.cn/news/89077.html

相关文章

代码随想录算法训练营day52 | 300.最长递增子序列,674. 最长连续递增序列,718. 最长重复子数组

代码随想录算法训练营day52 | 300.最长递增子序列&#xff0c;674. 最长连续递增序列&#xff0c;718. 最长重复子数组 300.最长递增子序列解法一&#xff1a;动态规划 674. 最长连续递增序列解法一&#xff1a;动态规划解法二&#xff1a;双指针法 718. 最长重复子数组解法一&…

Cadence+SPB16.2入门教程(下)

弹出Create Net Class对话框,如图4.21所示。输入名称DDR_DATA,点击OK关闭对话框。 建立DDR_ADDR的过程也一样,同时选中网络XM1ADDR0-XM1ADDR15,XM1CASN、XM1CKE0、XM1CSN0、XM1RASN、XM1WEN后右键Create->Net Class。其它就不重复了。 然后将上一步建立的两个电气规则D…

在树莓派上控制GPIO常用的编程语言有哪些

在树莓派上控制GPIO(General Purpose Input Output,通用输入输出接口),比较常用和简单的编程语言有: 1. Python 这是树莓派官方推荐语言&#xff0c;控制GPIO只需要导入RPi.GPIO库,简单易学,代码如下: import RPi.GPIO as GPIOGPIO.setmode(GPIO.BCM) GPIO.setup(18, GPIO.…

Stimulsoft报表开发工具支持电子签名啦!一起来看

Stimulsoft Reports 是一款报告编写器&#xff0c;主要用于在桌面和Web上从头开始创建任何复杂的报告。可以在大多数平台上轻松实现部署&#xff0c;如ASP.NET, WinForms, .NET Core, JavaScript, WPF, Angular, Blazor, PHP, Java等&#xff0c;在你的应用程序中嵌入报告设计器…

很后悔,才发现这个API管理神器

想必大家都注意到了&#xff0c;近半年国产API管理工具火了起来。这说明两个问题&#xff0c;第一&#xff0c;API管理的重要性被越来越多的开发者认识到了&#xff0c;研发团队对API管理的需求也越来越强了。第二&#xff0c;说明国产软件真是越来越厉害了&#xff0c;大家确实…

STM32与ESP32下载器设计

文章目录 背景STM32下载器使用现成的DAPlink选择自制DAPlink ESP32/ESP8266下载器连接接口STM32接口ESP32接口 背景 我们常用的单片机主要有STM32和ESP32&#xff0c;其中STM32下载要求SWD下载接口&#xff0c;ESP32下载要求串口&#xff0c;但需要控制ESP32 IO0和EN口高低电平…

基于Android studio二手车交易系统app

客户端&#xff1a; 用户注册&#xff1a;通过输入用户名&#xff0c;密码&#xff0c;所在地&#xff0c;联系地址以及电话和电子邮件等信息进行用户信息的注册。 二手车查看&#xff1a;用户注册登录系统后&#xff0c;可以查看二手车的基本信息&#xff0c;通过二手车的品牌…

如何避免Salesforce Apex代码中5个常见错误,提升开发技巧?

编码是一门需要严谨和谨慎的技术&#xff0c;即使是有经验的开发人员也会犯错。一些最常见的编程错误&#xff0c;可能会导致严重的后果。因此&#xff0c;作为一名开发人员&#xff0c;了解并避免这些错误是非常重要的。 本篇文章将为学习者介绍在编写Apex代码时一定要规避的…