Android(安卓)Studio 配置使用GreenDao3.0
16lz
2021-01-24
什么是GreenDao?
- GreenDao是一款开源的数据库框架,使用它可以方便高效地操作SQLite Database
GreenDao有什么优势?
- 最高性能(可能是Android最快的ORM); 我们的基准也是开源的
- 易于使用的功能强大的API涵盖关系和联接
- 最小的内存消耗
- Library占用极小(<100KB),以保持您的建立时间较低,并避免65k方法限制
- 数据库加密:greenDAO支持SQLCipher,以保护用户的数据安全
- 更多详情请察看GreenDao的官网 —— [ greenDAO ]
在Android Stuidio上快速配置GreenDao
- 首先导入GreenDao 依赖包,在project视图的app下的gradle里添加如下:
dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) compile 'com.android.support.constraint:constraint-layout:1.0.2' //wesker add GreenDao start compile 'org.greenrobot:greendao:3.0.1' compile 'org.greenrobot:greendao-generator:3.0.0' //wesker add GreenDao end testCompile 'junit:junit:4.12'}
- 生成GreenDao所依赖的插件,需要去maven仓库下载这个插件。在project视图的app下的gradle里添加
//wesker add GreenDao startapply plugin: 'org.greenrobot.greendao'buildscript { repositories { mavenCentral() } dependencies { classpath 'org.greenrobot:greendao-gradle-plugin:3.0.0' }}greendao { schemaVersion 1 daoPackage 'com.greendaodemo.gen'//1 targetGenDir 'src/main/java'}//wekser add GreenDao end
名称 | 含义 |
---|---|
schemaVersion | 数据库schema版本号,迁移等操作会用到 |
daoPackage | 通过gradle插件生成的数据库相关文件的包名,默认为你的entity所在的包名 |
targetGenDir | 自定义生成数据库文件的目录 |
- 最后还要配置最后一步,在project下的gradle里配置
classpath 'com.android.tools.build:gradle:2.3.1' classpath 'org.greenrobot:greendao-gradle-plugin:3.0.0'
这一步不配置的话可能会报Error:Execution failed for task ‘:app:greendao’.这个错误
- 到此GreenDao配置完成,接下来我们来看看怎么使用它吧。
使用GreenDao
- 编写一个User实体类
- 执行 Build->Make Project。GreenDao会自动帮你生成get和set方法。并且生成如下文件
@Entitypublic class User { @Id(autoincrement = true) private Long id; private String username; @Transient private int temp; public String getUsername() { return this.username; } public void setUsername(String username) { this.username = username; } public long getId() { return this.id; } public void setId(long id) { this.id = id; } public void setId(Long id) { this.id = id; } @Generated(hash = 79420138) public User(Long id, String username) { this.id = id; this.username = username; } @Generated(hash = 586692638) public User() { }}
开始增删改查操作
- 首先开始初始化数据库
//创建一个数据库,名字为"wesker" DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(ApplicationContextHodler.getContext(), "wesker", null); //一个DaoMaster就代表着一个数据库的连接; DaoMaster mDaoMaster = new DaoMaster(devOpenHelper.getWritableDatabase()); // DaoSession可以让我们使用一些Entity的基本操作和获取Dao操作类, // DaoSession可以创建多个,每一个都是属于同一个数据库连接的 DaoSession mDaoSession = mDaoMaster.newSession(); UserDao mUserDao = daoSession.getUserDao();
- Insert
private void insert(){ User mUser = new User(null,username);//如果id为null,那么数据库会为其分配自增长id mUserDao.insert(mUser); Toast.makeText(this, "成功插入", Toast.LENGTH_SHORT).show(); }
- Delete
private void delete(){ User findUser = mUserDao.queryBuilder().where(UserDao.Properties.Username.eq("update_wesker")).build().unique(); if(findUser != null){ mUserDao.deleteByKey(findUser.getId()); } }
-Update
private void update(){ User findUser = mUserDao.queryBuilder().where(UserDao.Properties.Username.eq("insert_wesker")).build().unique(); if(findUser != null) { findUser.setUsername("update_wesker"); mUserDao.update(findUser); Toast.makeText(this, "修改成功", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(this, "用户不存在", Toast.LENGTH_SHORT).show(); } }
-Query
private void query(){ List userList = mUserDao.queryBuilder() .where(UserDao.Properties.Id.notEq(1)) .limit(10) .build().list(); StringBuilder s = new StringBuilder(); for(User user:userList){ s.append("userId:"+user.getId()+"username:"+user.getUsername()); s.append('\n'); } display.setText(s); }
-自定义查询
private void customSql(){ Cursor cursor = mUserDao.getDatabase().rawQuery("select * from wesker", null); while (cursor.moveToNext()) { int chatCount = cursor.getInt(0); String username= cursor.getString(1); } }
GreenDao基本配置使用到这就结束啦,第一次写文章如有不足之处还望见谅并请提出,共勉。
更多相关文章
- android模拟器操作
- Android版本演进中的兼容性问题
- 最全最好用的Android(安卓)Studio插件整理
- Android(安卓)- Android(安卓)Architecture Components - Room
- Android(安卓)Studio 使用jdbc远程连接阿里云主机web数据库(逃坑)
- Android(安卓)StrictMode使用
- Android(Xamarin)之旅(五)
- App Widget ————android 新一代移动操作系统的特征
- android插件开发,使用360加固自动多渠道打包