yangfuhai / afinal

Afinal是一个android的ioc,orm框架,内置了四大模块功能:FinalAcitivity,FinalBitmap,FinalDb,FinalHttp。通过finalActivity,我们可以通过注解的方式进行绑定ui和事件。通过finalBitmap,我们可以方便的加载bitmap图片,而无需考虑oom等问题。通过finalDB模块,我们一行代码就可以对android的sqlite数据库进行增删改查。通过FinalHttp模块,我们可以以ajax形式请求http数据。详情请通过以下网址查看。
3.16k stars 1.49k forks source link

修改findAllBySql 并重载 #38

Open haopeng2046 opened 11 years ago

haopeng2046 commented 11 years ago
/**
 * 根据条件查找所有数据
 * @param clazz
 * @param strSQL
 */
public <T> List<T> findAllBySql(Class<T> clazz,String strSQL){
    return findAllBySql(clazz, true, strSQL);
}

/**
 * 根据条件查找所有数据
 * @param clazz
 * @param isCheckTable 为false时 ,该类不调用checkTableExist()方法,不会在数据库中自动 建表
 * @param strSQL
 */
public <T> List<T> findAllBySql(Class<T> clazz,Boolean isCheckTable,String strSQL){
    if(isCheckTable==true){checkTableExist(clazz);}
    debugSql(strSQL);
    Cursor cursor = db.rawQuery(strSQL, null);
    try {
        List<T> list = new ArrayList<T>();
        while(cursor.moveToNext()){
            T t = CursorUtils.getEntity(cursor, clazz,this);
            list.add(t);
        }
        return list;
    } catch (Exception e) {
        e.printStackTrace();
    }finally{
        if(cursor!=null)
            cursor.close();
        cursor=null;
    }
    return null;
}

1.将findAllBySql private属性更改为public属性。这样就支持我们手写一些复杂的SQL了。 2.修改原有findAllBySql 方法,并增加了一个重载方法。

原来方法调用,会自动在数据库中建立 UserView的表,其实我们UserView只是前台视图,是不需要建表的。 List userList = db.findAllBySql(UserView.class,"select * from user_test a,user_child b where a.id = b.parentId");

调用时: List userList = db.findAllBySql(UserView.class,false,"select * from user_test a,user_child b where a.id = b.parentId"); 第二个参数为false时,系统就不执行checkTableExist 方法,就不会自动建立UserView这个表了。