В Spring + Mybatis, как я могу получить имена параметров dao-метода во время выполнения? - PullRequest
0 голосов
/ 27 мая 2019

В коде, когда я знаю только beanId, указывающий на объект dao, как я могу получить имена параметров метода (в объекте 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 , дао-объект является прокси-объектом , прокси-объект, по-видимому, не имеет информации об именах параметров», поэтому это усложняет и усложняет этот вопрос

Ответы [ 2 ]

1 голос
/ 27 мая 2019

Вы можете попробовать это для 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());
}
0 голосов
/ 27 мая 2019

Если вы используете Java 8, пожалуйста, посмотрите на ссылку ниже, чтобы получить имена параметров метода, используя отражение.

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

...