利用java反射动态调用方法,生成grid数据 拼搏现实的明天。 2023-08-17 16:30 109阅读 0赞 项目中需要java后台查询并组装前台grid的数据,数据行数不定,数据行定义不定,开始用了最原始的方法,写了几百行,就是前台需要什么字段后台拼接什么字段,java代码冗余量非常大,并且不够灵活,一旦前台页面需要调整字段顺序或者增加一个字段、删除一个字段时,后台需要修改java代码。经过一上午的重构努力,改为数据库配置字段与字段对应方法,java利用反射动态调用对象方法从而获取字段值,拼接为list传递给前台。这样修改后,代码干净整洁,非常灵活,只要是对象中存在的方法,可以在数据库中任意配置显示与否、显示顺序等,现在分别介绍下实现过程: 一、数据库定义 CREATE TABLE \`IS\_WEB\_TABLECONF\` ( \`guid\` bigint(20) NOT NULL, \`columnname\` varchar(255) CHARACTER SET utf8 COLLATE utf8\_general\_ci DEFAULT NULL,--字段在页面的显示名称 \`language\` varchar(255) CHARACTER SET utf8 COLLATE utf8\_general\_ci DEFAULT NULL,--字段的反射方法 \`columnmethodname\` varchar(255) CHARACTER SET utf8 COLLATE utf8\_general\_ci DEFAULT NULL, \`orderstr\` int(10) DEFAULT NULL,--字段在页面的显示顺序 \`tablename\` varchar(255) CHARACTER SET utf8 COLLATE utf8\_general\_ci DEFAULT NULL,--表单名称 \`modulename\` varchar(255) CHARACTER SET utf8 COLLATE utf8\_general\_ci DEFAULT NULL,--模块名称 PRIMARY KEY (\`guid\`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8\_general\_ci ROW\_FORMAT = Dynamic; \-- ---------------------------- \-- Records of IS\_WEB\_TABLECONF \-- ---------------------------- INSERT INTO \`IS\_WEB\_TABLECONF\` VALUES (1, '公司名称:', 'zh-ch', 'getBranchName', 1, b'0', 23, '2019-09-18 10:44:32', '2019-09-18 10:44:30', 12, 'WebInstallation', 'BaseInfo'); INSERT INTO \`IS\_WEB\_TABLECONF\` VALUES (2, '初始分公司:', 'zh-ch', 'getProtocolStartDate', 2, b'0', 345, '2019-09-18 10:45:48', '2019-09-18 10:45:50', 4, 'WebInstallation', 'BaseInfo'); 二、java中根据不同模块查询对应的表格定义,组装数据 private void getListInfo(String licenseClassName, List qualifyList, Object dto, String qualifyInfo) { //licenseClassName需要反射对象的类路径名称,如: "com.neuxa.is.isinterface.fm.dto.IsSlInstallationunitReviewDto" //dto是查询好带有数据信息的对象实体 List<IsWebTableconfDto> tableConfQua = dictionaryUtil.getTableConf("WebInstallation", qualifyInfo); for (IsWebTableconfDto confDto : tableConfQua) { JSONObject object = new JSONObject(); object.put("key", confDto.getColumnname()); String value = ""; value = getInvokeMethodValue(licenseClassName, confDto.getColumnmethodname(), dto); object.put("value", value); qualifyList.add(object); } private String getInvokeMethodValue(String classBeanName,String methodName,Object curDto){ String value=""; try { Class<?> clazz = Class.forName(classBeanName); Method method = clazz.getDeclaredMethod(methodName); method.setAccessible(true); Object invoke = method.invoke(curDto); value=invoke.toString(); }catch(Exception e){ e.printStackTrace(); } return value; } 转载于:https://www.cnblogs.com/DylanZ/p/11541557.html
相关 Java反射API操作不当:动态生成类并调用方法实例 在Java中,反射API允许我们在运行时获取和修改类的信息,以及创建对象并调用方法。以下是如何动态生成类并调用方法的步骤: 1. 获取当前类(如果需要生成的是继承自已的子类) 缺乏、安全感/ 2024年09月19日 12:36/ 0 赞/ 4 阅读
相关 Java反射API:动态调用方法实例 在Java中,反射API允许我们在运行时检查类、接口、字段和方法。以下是一个关于如何使用反射API动态调用方法的实例: ```java import java.lang.re Myth丶恋晨/ 2024年09月17日 05:33/ 0 赞/ 12 阅读
相关 Java反射机制:如何动态调用方法 在Java中,反射(Reflection)是一种强大的机制,它允许我们在运行时检查类、接口和字段,以及动态调用它们的方法。 以下是如何使用Java反射动态调用方法的步骤: 约定不等于承诺〃/ 2024年09月14日 17:21/ 0 赞/ 20 阅读
相关 Java反射机制:如何动态调用方法 Java的反射机制是Java语言提供的一种允许程序在运行时检查类、字段和方法的能力。 以下是动态调用方法的基本步骤: 1. 获取对象:首先需要一个指向你想要操作的类的对象。 阳光穿透心脏的1/2处/ 2024年09月12日 16:33/ 0 赞/ 29 阅读
相关 Java反射应用案例:如何利用反射实现动态类加载和方法调用? 在Java中,反射是一种强大的机制,它允许我们在运行时检查类、接口、字段和方法。以下是如何利用反射实现动态类加载和方法调用的示例: 1. 动态类加载: ```java // 偏执的太偏执、/ 2024年09月10日 12:54/ 0 赞/ 34 阅读
相关 java中利用反射动态调用不同方法工具类 使用举例: public Object findpage(DeviceTypeClass cla,DataLogSearchDto entity, QueryRequ 悠悠/ 2024年03月23日 17:44/ 0 赞/ 43 阅读
相关 利用java反射动态调用方法,生成grid数据 项目中需要java后台查询并组装前台grid的数据,数据行数不定,数据行定义不定,开始用了最原始的方法,写了几百行,就是前台需要什么字段后台拼接什么字段,java代码冗余量非常 拼搏现实的明天。/ 2023年08月17日 16:30/ 0 赞/ 110 阅读
相关 利用java反射机制对方法进行调用 今天研究了一下java的反射机制,在此做个笔记。 基本步骤:首先获取Class对象,然后用该对象获取方法。具体的就看代码吧。对照本文最后的结果,会更好的理解反射机制。 浅浅的花香味﹌/ 2022年07月12日 15:53/ 0 赞/ 190 阅读
相关 Ext-动态生成grid Ext.define('V5.auditoper.quekeyword.view.DynTestGrid', { extend : 'Ext.grid. 小鱼儿/ 2022年06月14日 09:41/ 0 赞/ 163 阅读
还没有评论,来说两句吧...