Java 反射类来实现对数据库的操作

话说~之前用C#做反射DAL的时候,写基础代码非常的痛苦,包括参数什么的全部动态生成,无比烦躁啊。 但是写完后,在程序中使用,却是无比的轻松,真的很提高效率。

正好手头上在做JAVA的教师助理系统,也果断用反射类来做了。

首先是对应数据表建立对应的数据类。包括各个字段。

然后就是用JAVA中的 reflect来提取这个类的各个方法,来构建SQL语句。

之前在做反射的时候,用到 Method[] 数组来存储类中的所有方法,但是 Method[] 里面的字段排序不是自上而下的排序,而是字典序,这个很让我纠结。 最后只好把所有属性设为Public , 用 Field[] 来获取所有的属性。

下面是动态创建 SQL 插入语句的代码:
public String createInsert(Object obj)
{
String a=obj.getClass().toString(); //获取完整类名
String b[]=a.split(” “); //把完整类名以空格分割,存进数组
Class cla=null;
try {
cla=Class.forName(b[1]); //取出数组中索引为1的数值。 JAVA的完整类名是 JAVA XXX CLASS .. 其中XXX 就是传入的类的名字,其余部分都是起的标识的用处。在发射中只需要类名就够了。所以b[1]就是单独的类名
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Field[] f=cla.getDeclaredFields(); // 将类中的所有的属性都存入数组
StringBuilder sb=new StringBuilder();
sb.append(“INSERT INTO “);
sb.append(“`”+cla.getSimpleName()+”`”); //输出类名
sb.append(“(“);
for(int i=0;i

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.