正在阅读:一个简单实用的数据库操作框架一个简单实用的数据库操作框架

2004-08-16 10:34 出处:CSDN 作者:chensheng913 责任编辑:linjixiong


  public static Row fromValueObject(Object vo) throws Exception {
  Row row = new Row();
  Class type = vo.getClass(); //得到Class用于进行反射处理
  Field[] fields = type.getDeclaredFields();
  for (int i = 0; i < fields.length; i++) {
  String name = fields[i].getName();
  String methodName = "get" + Character.toUpperCase(name.charAt(0)) +
  name.substring(1);
  Method method = type.getMethod(methodName, new Class[] {});
  Object value = method.invoke(vo, new Object[] {});
  String nameInRow = toInRowName(name);//在此进行值对象中的名称向行对象中的名称转换
  row.put(nameInRow, value);
  }
  return row;
  }
  /**
  * 将值对象中属性名转换成对应的行对象中的字段名(因为行对象中的字段名
  * 在更新数据库时必须与数据库表中字段名完全匹配)
  * 一般规则为  fsiId ---> fsi_id(现在假设的情况是如果出现有两个单词
  * 以上的值对象属性名则数据库表中的字段名一定是有下划线的)
  * @param voName
  * @return
  */
  public static String toInRowName(String voName) {
  StringBuffer sb = new StringBuffer();
  for (int i = 0; i < voName.length(); i++) { //遍历voName如果有大写字母则将大写字母转换为_加小写
  char cur = voName.charAt(i);
  if (Character.isUpperCase(cur)) {
  sb.append("_");
  sb.append(Character.toLowerCase(cur));
  }
  else {
  sb.append(cur);
  }
  }
  return sb.toString();
  }
  }

 

  Row对象中用了一个HashMap对象存放着对应数据库表中的字段名和对应值,由于Map对象的无序性,所以用了一个vector(当然也可以用List代替)来存放字段名(按用户添加的顺序)这样就可以提供get(int i)方法来顺序取得Map中的值了。要注意的是三个静态辅助方法toValueObject,fromVauleObject,toInRowName。toValueObject方法用于将一个行对象转换为值对象方法中利用了Java的多态和反射机制(请大家参考反射API)。FromValueObject是上一个方法的逆操作,toInRowName方法是实现值对象中的属性名向数据库表中字段名的转换,因为一般在数据库建表时是用的这种形式stu_id,而Java中JavaBean的属性是这样的stuId。

  RowSet的代码如下:


  package com.gdrj.util.database;
  import java.util.*;
  public class RowSet {
  private Vector vector = new Vector();

  public RowSet() {







察看评论详细内容 我要发表评论
作者笔名简短内容 发表时间
:

键盘也能翻页,试试“← →”键

关注我们

最新资讯离线随时看 聊天吐槽赢奖品