Android greenDAO入门
2015-06-25 21:57
501 查看
Android greenDAO入门
我们在进行android APK开发的时候经常要用到数据库,最初的时候我们都是自己写DBOpenHelper继承SQLiteOpenHelper,DbManager去管理数据库的表,而且经常会碰到不同线程访问的问题导致APK挂掉的问题,greenDAO 就可以很好的帮我们处理掉这些问题。用起来也非常的方便,用greenDAO的时候我们自己不用考虑什么问题。网上也有好多关于greenDAO的文章。我这里就用一个很简单的例子写给像我一样刚入门级别的菜鸟看,我也是偶然在一个项目中用到了,如果你也是和我一样第一次使用greenDAO,可以结合代码一起看下怎么使用,可以让你很快的入门。
1. 实例代码地址
实例代码CSDN下载地址不用资源分下载例子写的非常的简单,没有进行很多数据库的操作,只是让像我一样菜鸟的人能够大概知道要怎么使用。
2. 代码简单的介绍
代码是基于android studio的代码,主要包括两个module(app, templategenerator)。app module是android 工程是在这个工程里面都数据库进行操作。templategenerator module是java工程是用来自动greenDAO相关的代码。templategenerator module:非常的简单(JAVA工程,自动生成一些代码)。
gradle 文件:
project(':templategenerator') { apply plugin: 'application' apply plugin: 'java' mainClassName = "com.mktech.gsmartrouter.MobileTemplateGenerator" // edit output direction def outputDir = "../app/src-gen" dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'de.greenrobot:DaoGenerator:1.3.0' compile 'org.freemarker:freemarker:2.3.20' } sourceSets { main { java.srcDirs = ['src/main/java'] resources.srcDirs = ['res'] } } task createDocs { def docs = file(outputDir) docs.mkdirs() } run { args outputDir } }
def outputDir = “../app/src-gen” 中./app/src-gen 是我们要自动生产代码存放的路径。
compile ‘de.greenrobot:DaoGenerator:1.3.0’
compile ‘org.freemarker:freemarker:2.3.20’ 则是greenDAO generator工程要依赖的两个库。
java代码:
public void generateAll(String outDir) throws Exception { Schema schema = new Schema(1, "greendao"); addCloudAccounts(schema); addHomeShareUploadTableInfo(schema); new DaoGenerator().generateAll(schema, outDir); } private static void addCloudAccounts(Schema schema) { Entity accounts = schema.addEntity("User"); accounts.addStringProperty("password").notNull(); accounts.addStringProperty("username").notNull().primaryKey(); accounts.addBooleanProperty("rememberPassword"); } private static void addHomeShareUploadTableInfo(Schema schema) { Entity uploadInfo = schema.addEntity("HomeShareUploadInfo"); uploadInfo.addIdProperty().autoincrement(); uploadInfo.addStringProperty("filename").notNull(); uploadInfo.addStringProperty("md5").notNull(); uploadInfo.addStringProperty("from").notNull(); uploadInfo.addStringProperty("to").notNull(); uploadInfo.addDateProperty("uploadTime").notNull(); uploadInfo.addIntProperty("percent"); uploadInfo.addIntProperty("state"); uploadInfo.addIntProperty("type"); }
这里我就随便建了两个表User表 和 HomeShareUploadInfo表,如果需要的话可以继续添加比较简单。
Schema schema = new Schema(1, “greendao”); 中 greendao 是包的名字(/app/src-gen 文件夹下面的包的名字)
当执行`
public static void main(String[] args) throws Exception { new DaoTemplate().generateAll(args[0]); }
完之后就会在../app/src-gen/greendao目录下面生成一些文件,当然前提是要保证这个目录在执行templategenerator module 之前是存在。 这样templategenerator module的功能就结束了(写的非常简单,一些具体的东西可以去google下)。
app module:这个才是我们主要关注的module,要在这个工程里面对数据库进行操作。首先是../app/src-gen/greendao目录,在app目录下面新建src-gen/greendao 文件夹。gradle设置。
sourceSets { main { java.srcDirs = ['src', 'src-gen'] } }
依赖库
compile 'de.greenrobot:greendao:1.3.7'
在application 中获取 private DaoSession mDaoSession 全局使用; DaoSession类是代码自动生成的。
private void setupDatabase() { DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, "gsmartrouter-mobile.db", null); SQLiteDatabase db = helper.getWritableDatabase(); DaoMaster daoMaster = new DaoMaster(db); mDaoSession = daoMaster.newSession(); } public DaoSession getDaoSession() { return mDaoSession; }
然后就是具体的操作了,对于每个表我们一般都会对应一个class如图
在对应的表的class里面写相应的数据库的操作,具体的可以看下class文件里面的内容,网上也有很多greenDAO数据库增删改查的例子,仿照来写就可以了。
具体调用
private void saveInDatabase() { Task.callInBackground(new Callable<Void>() { @Override public Void call() throws Exception { /** save info to database */ User user = new User("abc", "abc", false); UserRepository.insertOrUpdate(mContext, user); return null; } }); } private void readFromDatabase() { Task.callInBackground(new Callable<Void>() { @Override public Void call() throws Exception { /** read info from database */ List<User> list = UserRepository.getAll(mContext); Log.d("vae_tag", list.size() + " = size"); return null; } }); }
就简单的调用了插入和读取。主要是
User user = new User("abc", "abc", false); UserRepository.insertOrUpdate(mContext, user);
和
List<User> list = UserRepository.getAll(mContext); Log.d("vae_tag", list.size() + " = size");
使用的时候要先运行templategenerator module让自动生成对应的代码。运行方法如图。
然后就随便你怎么操作了。用同样的方式可以很方便的运用到大家的项目当中去。
写的比较乱,但还是希望能在大家在不知道greenDAO如何使用的时候起到入门的作用。
相关文章推荐
- Activity嵌套多个Fragment实现横竖屏切换
- SlidingMenu属性详解【Android】
- 6.Android工程更改api版本?
- 当android API导入的是较低版本,如2.3.3. 但仍提示AVD API低?
- 【进阶android】ListView源码分析——布局三大方法
- 【Android】SlidingMenu属性详解
- android EditText输入变化事件详解
- Android开发:findViewById返回null的解决办法
- 图解Android View的scrollTo(),scrollBy(),getScrollX(), getScrollY()
- Android下Listview的onItemClick以及onItemLongClick等易模糊问题验证
- Android 2.3.3 SDK 源代码关联Eclipse ?
- Android开源框架Universal-Image-Loader详解
- android EditText自动换行等
- ubuntu中正确设置android手机驱动程序
- 网路图片查看器
- <Android>wifi连接进行调试
- Android adb使用详细介绍(含adb使用命令行)
- Android 中 使用 Gson解析json
- Android基础知识_Intent概念及实现
- Android项目目录结构分析