博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于Jedis的Redis的Web页面操作
阅读量:4048 次
发布时间:2019-05-25

本文共 3356 字,大约阅读时间需要 11 分钟。

一. 思路

1.通过反射找到对应的方法名;

2.通过参数个数确定要调用的方法;

3.通过参数类型转换输入参数的类型;

4.通过Method.invoke方式执行。

 

二.代码如下:

public Map
invoke(String methodName, String param) { Map
res = Maps.newHashMap(); methodName = methodName.trim(); param = param.trim(); if (StringUtils.isBlank(methodName)) { res.put("msg", "请输入方法"); return res; } Jedis jedis = null; try { jedis = pool.getResource(); String[] params = null; Method target = null; Object[] targetParams; if (StringUtils.isNotBlank(param)) { params = param.split(" "); targetParams = new Object[params.length]; } else { targetParams = new Object[]{}; } // 遍历找到同名方法 List
methods = Lists.newArrayList(); for (Class
searchType = jedis.getClass(); searchType != Object.class; searchType = searchType.getSuperclass()) { Method[] methodArray = searchType.getDeclaredMethods(); for (Method method : methodArray) { if (method.getName().equals(methodName)) { Reflections.makeAccessible(method); methods.add(method); } } } // 根据参数个数判断正确方法 for (Method method : methods) { logger.error(method.getName()); Class
[] parameterTypes = method.getParameterTypes(); if (ArrayUtils.isNotEmpty(parameterTypes) && ArrayUtils.isNotEmpty(params)) { logger.error(parameterTypes[0].getName()); if ("[B".equals(parameterTypes[0].getName())) { continue; } if (parameterTypes.length == params.length) { target = method; break; } } else if (ArrayUtils.isEmpty(params) && ArrayUtils.isEmpty(parameterTypes)) { target = method; break; } } // 根据Method参数转换输入参数数据类型 if (null != target && ArrayUtils.isNotEmpty(params)) { Class
[] parameterTypes = target.getParameterTypes(); for (int i = 0; i < params.length; i++) { if (parameterTypes[i].getName().contains("String")) { targetParams[i] = params[i]; } else if (parameterTypes[i].getName().contains("int")) { targetParams[i] = Integer.valueOf(params[i]); } else if (parameterTypes[i].getName().contains("double")) { targetParams[i] = Double.valueOf(params[i]); } else if (parameterTypes[i].getName().contains("float")) { targetParams[i] = Float.valueOf(params[i]); } } } Object result = target.invoke(jedis, targetParams); res.put("msg", jsonMapper.toJson(result)); } catch (Exception e) { logger.error("执行Redis异常", e); res.put("msg", e); } finally { if (jedis != null) { jedis.disconnect(); } } return res; }

 

转载地址:http://zhyci.baihongyu.com/

你可能感兴趣的文章
Silverlight Toolkit例子代码中缺少System.Windows.Controls.Samples.Common.dll的解决办法
查看>>
项目经理培训后的一点感概
查看>>
vc学习之窗口大小发生变更时使控件自动摆放到合适的位置
查看>>
Oracle 获取系统日期时间,导出数据库
查看>>
黄巢的菊花,非常喜欢,贴出来共享一下
查看>>
在光纤环网中的b/s与c/s的比对
查看>>
根据程序名称和程序路径判断程序是否启动
查看>>
史记翻译-汉初三杰-萧何-萧相国世家第二十三
查看>>
史记翻译-汉初三杰-张良-留侯世家第二十五
查看>>
史记翻译-汉初三杰-韩信-淮阴侯列传第三十二
查看>>
帝王封赏之道和老板的封赏之道
查看>>
工作分解结构在软件开发中的应用
查看>>
关于系统崩溃后的Oracle恢复
查看>>
遭遇蚊子的獠牙,想起一种叫黄鸡婆的小虫子
查看>>
使用批处理命令给客户更新oracle数据库
查看>>
回首考研路:那年,那月,还有那条孤独的考研狗
查看>>
GCD小结
查看>>
IOS 第三方库介绍
查看>>
iPhone架构xmpp聊天工具 -xmpp协议初识《一》
查看>>
iOS提交后申请加急审核
查看>>