读书人

用反照实现通用Dao

发布时间: 2012-12-21 12:03:49 作者: rapoo

用反射实现通用Dao

public class MySession {/** * 用反射实现的查找 */public Object find(Class clazz,Object id){try {//通过反射获取clazz的类名QueryRunner query = new QueryRunner();String className = clazz.getName();String[] split = className.split("\\.");String tableName = split[split.length - 1];String sql = "select * from " + tableName + " where id=?";//Object c =  query.query(sql, new BeanHandler(clazz), new Object[] { id });System.out.println(sql);return null;} catch (Exception e) {throw new RuntimeException(e);}}/* * 实现删除 */public  void delete(Class clazz,Object id){try {QueryRunner runner = new QueryRunner();String className = clazz.getName();String[] split = className.split("\\.");String tableName = split[split.length - 1];String sql = "delete from " + tableName + "where id=?";//runner.update(sql, new Object[] { id });} catch (Exception e) {}}/** * 实现增加 */public void add(Class clazz){//首先获得表名QueryRunner runner = new QueryRunner();String className = clazz.getName();String[] split = className.split("\\.");String tableName = split[split.length - 1];//通过反射获得字段Field[] fields = clazz.getDeclaredFields();StringBuilder sb = new StringBuilder("insert into  ");sb.append(tableName+" (");for(Field f:fields){sb.append(f.getName()+",");}sb.deleteCharAt(sb.length()-1);sb.append(")");sb.append(" values(");for(int i=0;i<fields.length;i++){sb.append("?,");}sb.deleteCharAt(sb.length()-1);sb.append(")");String sql = sb.toString();System.out.println("--------add---------\n"+sql);}/* * 修改同类增加 */

?

for (Field f : fields) {
sql.append(f + ",");
}
sql.deleteCharAt(sql.length() - 1);
sql.append(" ) values (");
for (Field f : fields) {
sql.append("?,");
}
sql.deleteCharAt(sql.length() - 1);
sql.append(" ) where id=?");
Object params[]= new Object[fields.length];
for(int i=0;i<fields.length;i++){
String value = BeanUtils.getProperty(bean,fields[i].getName());
params[i]=value;
}
int count = runner.update(sql.toString(),params);
if(count>0)return true;
return false;

} catch (Exception e) {
throw new DaoException();
}

读书人网 >编程

热点推荐