java代码
@SpringBootTest(classes = {ShujiegouApplication.class})
@RunWith(SpringJUnit4ClassRunner.class)
public class FansheTest {
@Test
public void test1() throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
SysColumn sysColumn = new SysColumn();
sysColumn.setId(1);
sysColumn.setColumnName("孙悟空");
sysColumn.setParentId(2);
sysColumn.setColumnRank(3);
sysColumn.setEnName("斗战胜佛");
// 1.获取类对象
Class<? extends SysColumn> guruClass = sysColumn.getClass();
// 2.类对象获取属性对象数组(所有的属性)
Field[] guruFields = guruClass.getDeclaredFields();
for (Field field:guruFields) {
// System.out.println(field);
System.out.println(field.getName());
}
for (int i = 0; i < guruFields.length; i++) {
//3.获取属性名
String guruFieldName = guruFields[i].getName();
// 4.拼接出来get方法名
String getMethodName = "get"+guruFieldName.substring(0,1).toUpperCase()+guruFieldName.substring(1);
// 5.通过方法名调用方法 获得方法返回值
// 参数 方法名 参数类型(可变长参数) get方法没有 就写成空
Method getMethod = guruClass.getDeclaredMethod(getMethodName, null);
// 执行该方法 参数 1.当前类对象所对应的对象 2.被调用方法所需要的参数 (可变长参数 数组)
Object invoke = getMethod.invoke(sysColumn, null);
System.out.println(invoke);
}
}
}
运行后
id
columnName
parentId
columnRank
enName
1
孙悟空
2
3
斗战胜佛
输出的是属性名和属性值。
对应的实体类
@Data
@AllArgsConstructor
@NoArgsConstructor
@Table(name = "sys_column")
public class SysColumn {
@Id
private Integer id;
private String columnName;
private Integer parentId;
private Integer columnRank;
private String enName;
}
这辈子坚持与不坚持都不可怕,怕的是独自走在坚持的道路上!
欢迎加入技术群聊!