Android数据库框架之GreenDao基本使用

在开发过程中,如果用常规的原生创建数据库的方式来操作的话,可能会遇到数据库开启关闭的异常,或者是线程里面同事处理一张表也会报出各种异常,在大趋势下我们主流的数据库框架有orm和greendao,现在greendao3.0也是采用的orm框架整合的,所以我们一起来看看怎么用GreenDao操作数据库.

首先我们来简单的实现新建一张表,然后插入数据,查看数据.这里我把每次点击的时间存入数据库,然后查询出来.如下效果图:


Android数据库框架之GreenDao基本使用_第1张图片
主界面


Android数据库框架之GreenDao基本使用_第2张图片
第一次点击



Android数据库框架之GreenDao基本使用_第3张图片
第三次点击


一:创建实体和表

这里我们用到一个工具工程,里面包含两个jar方便在生成代码中使用,如图:


Android数据库框架之GreenDao基本使用_第4张图片
目录

在ExampleDaoGenerator中,我们需要指定自己生成的目录,这里

// 加载本地配置文件中保存的路径

String savePath ="D:\\db";

//然后自己填写需要创建的字段

private static voidaddTaskViewLoadDocTable(Schema schema)

{

Entity entity = schema.addEntity("TaskViewEntity");

entity.setJavaPackage("com.test.entity.task");

entity.setJavaPackageDao("com.test.db.greendao.dao.task");

entity.setJavaDoc("任务视图");

entity.implementsSerializable();

entity.addStringProperty("guid").primaryKey().javaDocField("主键ID");

entity.addStringProperty("taskId").javaDocField("任务ID");

entity.addStringProperty("workDocId").javaDocField("产出文档ID");

entity.addStringProperty("docSubject").javaDocField("产出文档标题");

entity.addStringProperty("fileId").javaDocField("关联文档表的docId");

entity.addStringProperty("createUser").javaDocField("创建用户");

entity.addStringProperty("createDate").javaDocField("创建时间");

entity.addStringProperty("updateDate").javaDocField("更新时间");

}

然后右键运行后我们可以在指定的目录看到生成的文件,如图:


Android数据库框架之GreenDao基本使用_第5张图片
生成的文件


二:在imp中添加方法(查询,增加)

在成功生成文件后,我们需要将TaskViewEntityDao和TaskViewEntity移到自己的开发工程中去,然后新建一个lmp的类,处理我们所需要对表操作的逻辑.这里开发工程中大致需要用到如下这些操作数据库的工具类,如图:


Android数据库框架之GreenDao基本使用_第6张图片
目录

先看Impl中的逻辑,插入操作:

/**

* 修改

*

*@param

*/

public voidsetTaskViewEntityDisplayed(TaskViewEntity taskViewEntity)

{

taskViewEntity.setUpdateDate(DateUtil.shortDate());

DbUtils.getsTaskViewEntityDaoImpl().insertOrUpdate(taskViewEntity);

}

查询操作:

/**

* 查询列表所有

*

*@return

*/

publicList getTaskViewListByDisplayable()

{

QueryBuilder queryBuilder = queryBuilder();

returnqueryBuilder.orderDesc(TaskViewEntityDao.Properties.UpdateDate).build().list();

}


三:整合工具类,初始化GreenDao

//初始化:

@Override

public voidonCreate()

{

super.onCreate();

// GreenDao初始化

GreenDao.init(getApplicationContext());

GreenDao.getDaoSession();

}

四:调用方法.

btn_do.setOnClickListener(newView.OnClickListener()

{

@Override

public voidonClick(View view)

{

TaskViewEntity taskViewEntity =newTaskViewEntity();

taskViewEntity.setGuid(DateUtil.curTime());

DbUtils.getsTaskViewEntityDaoImpl().insertOrUpdate(taskViewEntity);

List taskViewEntities = DbUtils.getsTaskViewEntityDaoImpl().getTaskViewListByDisplayable();

StringBuffer sb =newStringBuffer();

for(inti =0; i < taskViewEntities.size(); i++)

{

sb.append(taskViewEntities.get(i).getGuid()).append("\n");

}

Toast.makeText(MainActivity.this, sb.toString(),1).show();

}

});

}

另外在截取一些关键代码:

//创建表

public static voidcreateAllTables(SQLiteDatabase db,booleanifNotExists)

{

TaskViewEntityDao.createTable(db, ifNotExists);

}

//删除表

public static voiddropAllTables(SQLiteDatabase db,booleanifExists)

{

TaskViewEntityDao.dropTable(db, ifExists);

}

//更新表

public voidonUpgrade(SQLiteDatabase db,intoldVersion,intnewVersion)

{

Log.i("greenDAO","Upgrading schema from version "+ oldVersion +" to "+ newVersion +

" by dropping all tables");

dropAllTables(db,true);

onCreate(db);

}


附件:(后续github上传)

(1)自动生成表结构工程代码(已经github上传)


(2)主工程代码.

你可能感兴趣的:(Android数据库框架之GreenDao基本使用)