首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Spring + Mybatis中,如何在运行时获取dao方法的参数名?

在Spring + Mybatis中,如何在运行时获取dao方法的参数名?
EN

Stack Overflow用户
提问于 2019-05-27 15:56:22
回答 2查看 141关注 0票数 0

在代码中,当我只知道指向dao对象的beanId时,如何在运行时获取方法(在dao对象中)参数名称?

我使用的是Java7,Spring4.1.6.RELEASE,Mybatis 3.2.8。我完全一无所知

代码语言:javascript
复制
String daoBeanId = "IUserDao";
String methodName = "insertUser";

ApplicationContext applicationContext = SpringContextUtil.getApplicationContext();

Object daoInstance = applicationContext.getBean(daoBeanId);
Class daoClass = daoInstance.getClass();

Method method = ReflectUtil.getMethod(daoClass,methodName);

//some code to get this method's parameter names

这不同于“我能用Java反射获取方法参数名吗?”,因为在mybatis中,道对象是代理对象,代理对象似乎没有参数名信息,这就使得这个问题变得更加复杂和困难

EN

回答 2

Stack Overflow用户

发布于 2019-05-27 17:13:01

您可以在Java 8中尝试执行此操作

代码语言:javascript
复制
Parameter[] parameters = method.getParameters();
for (Parameter parameter : parameters) {
    System.out.println(parameter.getName());
}

这适用于较早的Java版本

代码语言:javascript
复制
for (int i = 0; i < method.getArgumentTypes().length; i++) {
    LocalVariable variable = 
    method.getLocalVariableTable().getLocalVariable(i);
    System.out.println(variable.getName());
}
票数 1
EN

Stack Overflow用户

发布于 2019-05-27 16:30:11

如果您使用的是Java 8,请查看下面的链接,以使用反射获取方法参数名称。

https://www.baeldung.com/java-parameter-reflection

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56321907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档