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

时间:2019-05-27 07:56:22

标签: java java-7 mybatis spring-mybatis

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

我正在使用Java 7,Spring 4.1.6.RELEASE,Mybatis 3.2.8。而且我完全一无所知

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中,dao对象是代理对象,proxy对象似乎没有参数名称信息,因此使这个问题更加复杂和困难

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

您可以在Java 8上尝试使用

Parameter[] parameters = method.getParameters();
for (Parameter parameter : parameters) {
    System.out.println(parameter.getName());
}

这是针对Java早期版本的

for (int i = 0; i < method.getArgumentTypes().length; i++) {
    LocalVariable variable = 
    method.getLocalVariableTable().getLocalVariable(i);
    System.out.println(variable.getName());
}