您的位置:首页 > 其它

GreenDao常用操作(二)

2015-12-04 18:59 351 查看
实现通用的操作类

上篇中讲了基本的操作,这里来实现通用的数据库操作类

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);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: