GreenDao常用操作(二)

来源:互联网 发布:练配音的软件 编辑:程序博客网 时间:2024/05/16 11:08
  1. 实现通用的操作类
    上篇中讲了基本的操作,这里来实现通用的数据库操作类
    1.使用方法

    Person person = new Person();person.setName("zhangsan");person.setAddress("shanghai");PersonDao dbDao =           BaseApplication.getDaoSession(this).getPersonDao();DBOperator<PersonDao, Person> dbOperator     = new DBOperator<PersonDao, Person>(dbDao, BaseApplication.getDaoSession(this)); dbOperator.insertData(person);

    2.工具类代码如下

    public class DBOperator<T extends AbstractDao, E> {    public T mCustomDao;    public DaoSession mDaoSession;    public DBOperator(T customDao, DaoSession daoSession) {        this.mCustomDao = customDao;        this.mDaoSession = daoSession;    }    /**     * 插入一条数据     */    public long insertData(E e) {        return mCustomDao.insert(e);    }    /**     * 插入多条数据     */    public void insertDatas(final ArrayList<E> e) {        mDaoSession.runInTx(new Runnable() {            @Override            public void run() {                for (int i = 0; i < e.size(); i++) {                    E item = e.get(i);                    mCustomDao.insert(item);                }            }        });    }    /**     * 修改一条数据,根据id来匹配的     */    public void updateData(E e) {        mCustomDao.update(e);    }    /***     * 插入或替换数据     * @param e     */    public void insertOrUpdate(E e){        try{            mCustomDao.insertOrReplace(e);        }catch (Exception ex){            ex.getStackTrace();        }    }    /**     * 修改一条数据,根据id来匹配的     */    public void updateDataByField(E e, Property fieldName, String fieldValue, String sql) {        E result = getItemByField(fieldName, fieldValue);        if(result!=null){            mCustomDao.getDatabase().execSQL(sql);        }else{            mCustomDao.insert(e);        }    }    public static String getUpdateSql(String tableName, String[] allColumns, String[] columnsValue, String[] condition, String[] conditionValue){        String quotedTablename = '"' + tableName + '"';        StringBuilder builder = new StringBuilder("UPDATE ");        builder.append(quotedTablename).append(" SET ");        int length = allColumns.length;        for (int i = 0; i < length; i++) {            String columnName = allColumns[i];            String columnValue = columnsValue[i];            builder.append(columnName).append(" = ").append("\'"+columnValue+"\'");        }        builder.append(" WHERE ");        int confitionLength = condition.length;        for (int j = 0; j < confitionLength; j++) {            String key = condition[j];            String Value = conditionValue[j];            if(j!=0){                builder.append(" and ");            }            builder.append(key).append(" = ").append("\'"+Value + "\'");        }        return builder.toString();    }    /**     * 查询所有数据     */    public ArrayList<E> getAllData() {        return (ArrayList<E>) mCustomDao.loadAll();    }    /**     * 根据Tid获取单条数据     */    public E getItemByTid(String tid) {        ArrayList<E> list = (ArrayList<E>) mCustomDao.queryRaw(" tid = ? ", tid);        if(list!=null){            if(list.size()>0){                return list.get(0);            }        }        return null;    }    /**     * 根据某个字段获取单条数据     */    public E getItemByField(Property fieldName, String fieldValue) {        QueryBuilder qb = mCustomDao.queryBuilder();        qb.where(fieldName.eq(fieldValue));        List list = qb.list();        if(list!=null){            if(list.size()>0){                return (E) list.get(0);            }        }        return null;    }    /**     * 根据ID获取一条数据     * @param id     * @return     */    public E getItemByID(long id){        return (E) mCustomDao.load(id);    }    /**     * 删除表中所有数据     */    public void deleteAllData(){        mCustomDao.deleteAll();    }    /**     * 根据id删除一条数据     */    public void deleteItemByID(long id){        mCustomDao.deleteByKey(id);    }    public void deleteItemByTid(String tid){        QueryBuilder<E> mqBuilder = mCustomDao.queryBuilder();        mqBuilder.where(IllnessDBDao.Properties.Tid.eq(tid));        List<E> chatEntityList = mqBuilder.build().list();        mCustomDao.deleteInTx(chatEntityList);    }}
0 0