我在寻找更多"改进的方法";为此,我有这个方法从一个id中获取所有记录,然后是maps"然后进入一个班级,我有大约200个标签;为了映射,它将是一个非常非常长的if链…例子:
Connection conn = ServerJDBCConnection.getInstance().getConnection(....);
PreparedStatement pstmt = null;
ResultSet rs = null;
StringBuffer SQL = new StringBuffer("");
SQL.append(" select tag,value from dms_table where id =?");
pstmt = conn.prepareStatement(SQL.toString());
pstmt.setString(1, myid);
DMSClass dmsClass = new DMSClass(myid);
String tag = "";
rs = pstmt.executeQuery();
while (rs.next()) {
tag =rs.getString("TAG").trim();
if (tag.equals("Q1"))
dmsClass.setQ1(rs.getString("value"));
if (tag.equals("Q2"))
dmsClass.setQ2(rs.getString("value"));
if (tag.equals("Q3"))
dmsClass.setQ3(rs.getString("value"));
if (tag.equals("Q4"))
dmsClass.setQ4(rs.getString("value"));
.....
}
你可以使用反射,你可以在应用程序运行时创建一个映射,在整个应用程序生命周期中,你可以使用它来设置字段值,像这样-
public class Main {
static final Map<String, Field> fieldMap = new HashMap<>();
public static void main(String[] args) {
for (Field field : DMSClass.class.getDeclaredFields()) {
field.setAccessible(true);
fieldMap.put(field.getName(), field);
}
}
public static void getFromDB(){
..........
.........
while (rs.next()) {
tag =rs.getString("TAG").trim();
fieldMap.get(tag).set(dmsClass, rs.getString("value"));
}
}
}