当前ORM用于获取类、表映射关系。
提供一个ClassTable,成员有klass(类),table(表),成员列表(由PCD组成)(PCD包含成员和表的列名),以及key(键值)
在CT中,得到类名后就可设置类,成员列表:
public void setKlass(String className) {
try {
this.klass = Class.forName(className);
Field[] fieldList = this.klass.getDeclaredFields();
for (Field field : fieldList) {
String fieldName = field.getName();
String getterName = "get";
if (field.getType().equals(boolean.class)) {
getterName = "is";
}
getterName += fieldName.substring(0, 1).toUpperCase(Locale.ROOT)
+ fieldName.substring(1);
try {
this.klass.getDeclaredMethod(getterName);
PropertyColumnDef pcd = new PropertyColumnDef();
pcd.setColumn(fieldName);
pcd.setProperty(field);
this.fields.add(pcd);
} catch (NoSuchMethodException e) {
}
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
由类名反射出类,由类可得到成员列表,此时想是否每个方法的成员都是有效成员(即表中有其对应的列),若成员是有效的,那么其应该具有get方法,此时就可以用反射机制获取其get方法,若没有,说明该成员无效,方法获取会报错 但被catch 不会影响后续操作。
接着将有效成员及其初始列名(默认和成员名相同)加入PCD并加入成员列表。
这完成了类、成员及列的初始映射。
但实际的映射关系未必如此,举例:当前映射:成员id对应列名也必须为id,但实际有可能列名为stu_id,固利用xml文件获取其表名、表的列名分别利用setTable()
、setColumnName()
设置一次。
以上就将类、表映射关系获取完毕了。