java下的orm框架_JAVA描述的简单ORM框架

packagem.cnblogs.com.orm.conn;importjava.lang.reflect.Field;importjava.lang.reflect.InvocationTargetException;importjava.lang.reflect.Method;importm.cnblogs.com.orm.anno.ID;importm.cnblogs.com.orm.anno.Property;importm.cnblogs.com.orm.anno.Table;public classSession

{publicSession()

{

System.out.println("SESSION INIT");

}public void save(T obj) throwsNoSuchMethodException, SecurityException, IllegalAccessException,

IllegalArgumentException, InvocationTargetException

{

Class extends Object> cls =obj.getClass();

StringBuffer sql= newStringBuffer();

sql.append("INSERT INTO ");

Table tbl= (Table) cls.getAnnotation(Table.class);if (null !=tbl)

{

sql.append(tbl.name());

}else{

sql.append(cls.getName().substring(cls.getName().lastIndexOf(".") + 1));

}

sql.append("( ");

Field[] fields=cls.getDeclaredFields();

StringBuffer valueSql= newStringBuffer();for(Field field : fields)

{

Property proper= field.getAnnotation(Property.class);//获得字段第一个字母大写

String methodFirstLetter = field.getName().substring(0, 1).toUpperCase();//转换成字段的get方法

String getterName = "get" + methodFirstLetter + field.getName().substring(1);

Method getMethod= cls.getMethod(getterName, newClass[]

{});//这个对象字段get方法的值

Object value = getMethod.invoke(obj, newObject[]

{});if (field.getType().getName().equals(java.lang.String.class.getName()))

{

valueSql.append("'" + value + "'").append(",");

}else{

valueSql.append(value).append(",");

}if (null !=proper)

{

sql.append(proper.name()).append(",");

}else{

sql.append(field.getName()).append(",");

}

}

valueSql.deleteCharAt(valueSql.length()- 1);

sql.deleteCharAt(sql.length()- 1);

sql.append(" ) VALUES( ");

sql.append(valueSql);

sql.append(" )");

System.out.println(sql.toString());

}public void query(T obj) throwsNoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException

{

Class extends Object> cls =obj.getClass();

StringBuffer sql= newStringBuffer();

sql.append("SELETE FROM ");

Table tbl= (Table)cls.getAnnotation(Table.class);if (null !=tbl) {

sql.append(tbl.name());

}else{

sql.append(cls.getName().substring(cls.getName().lastIndexOf(".")+1));

}

Field[] fields=cls.getDeclaredFields();for(Field field : fields) {if (null != field.getAnnotation(ID.class))

{//获得字段第一个字母大写

String methodFirstLetter = field.getName().substring(0,1).toUpperCase();//转换成字段的get方法

String getterName = "get" + methodFirstLetter + field.getName().substring(1);

Method getMethod= cls.getMethod(getterName, newClass[] {});//这个对象字段get方法的值

Object value = getMethod.invoke(obj, newObject[] {});

sql.append(" WHERE ").append(field.getName()).append("=");if (field.getType().getName().equals(java.lang.String.class.getName())) {

sql.append("'" + value + "'");

}else{

sql.append(value);

}

}

}

System.out.println(sql.toString());

}public void update(T obj) throwsNoSuchMethodException, SecurityException, IllegalAccessException,

IllegalArgumentException, InvocationTargetException

{

Class extends Object> cls =obj.getClass();

StringBuffer sql= newStringBuffer();

StringBuffer condition= newStringBuffer();

sql.append("UPDATE ");

Table tbl= (Table) cls.getAnnotation(Table.class);if (null !=tbl)

{

sql.append(tbl.name());

}else{

sql.append(cls.getName().substring(cls.getName().lastIndexOf(".") + 1));

}

sql.append(" SET ");

Field[] fields=cls.getDeclaredFields();for(Field field : fields)

{

Property proper= field.getAnnotation(Property.class);//获得字段第一个字母大写

String methodFirstLetter = field.getName().substring(0, 1).toUpperCase();//转换成字段的get方法

String getterName = "get" + methodFirstLetter + field.getName().substring(1);

Method getMethod= cls.getMethod(getterName, newClass[]

{});//这个对象字段get方法的值

Object value = getMethod.invoke(obj, newObject[]

{});if (null != field.getAnnotation(ID.class))

{

condition.append(" WHERE ").append(field.getName()).append("=");if (field.getType().getName().equals(java.lang.String.class.getName()))

{

condition.append("'" + value + "'");

}else{

condition.append(value);

}

}else{

String tmp= "";if (field.getType().getName().equals(java.lang.String.class.getName()))

{

tmp= "'" + value + "'";

}else{

tmp= value + "";

}if (null !=proper)

{

sql.append(proper.name()).append("=").append(tmp).append(",");

}else{

sql.append(field.getName()).append("=").append(tmp).append(",");

}

}

}

sql.deleteCharAt(sql.length()- 1);

sql.append(condition);

System.out.println(sql.toString());

}public void delete(T obj) throwsNoSuchMethodException, SecurityException, IllegalAccessException,

IllegalArgumentException, InvocationTargetException

{

Class extends Object> cls =obj.getClass();

StringBuffer sql= newStringBuffer();

sql.append("DELETE FROM ");

Table tbl= (Table) cls.getAnnotation(Table.class);if (null !=tbl)

{

sql.append(tbl.name());

}else{

sql.append(cls.getName().substring(cls.getName().lastIndexOf(".") + 1));

}

Field[] fields=cls.getDeclaredFields();for(Field field : fields)

{if (null != field.getAnnotation(ID.class))

{//获得字段第一个字母大写

String methodFirstLetter = field.getName().substring(0, 1).toUpperCase();//转换成字段的get方法

String getterName = "get" + methodFirstLetter + field.getName().substring(1);

Method getMethod= cls.getMethod(getterName, newClass[]

{});//这个对象字段get方法的值

Object value = getMethod.invoke(obj, newObject[]

{});

sql.append(" WHERE ").append(field.getName()).append("=");if (field.getType().getName().equals(java.lang.String.class.getName()))

{

sql.append("'" + value + "'");

}else{

sql.append(value);

}

}

}

System.out.println(sql.toString());

}public voidclose()

{

System.out.println("SESSION CLOSE");

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值