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



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

我正在使用Java 7,弹簧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对象是代理对象,代理对象似乎没有参数名称信息,因此它使这个问题更加复杂且困难

您可以尝试使用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());
}

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

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

最新更新