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;
}
這輩子堅持與不堅持都不可怕,怕的是獨自走在堅持的道路上!
歡迎加入技術羣聊!