GreenDAO 学习笔记-小白教程(一)GreenDAO的简介和基本使用
来源:互联网 发布:淘宝店上货模板 编辑:程序博客网 时间:2024/04/25 18:51
GreenDAO Github地址
GreenDAO 官方网站
介绍
GreenDAO是一个开源的Android端ORM(Object Relational Mapping 对象关系映射)框架,可以让用户使用Java方法来做增删改查等动作。
使用
1. 添加gradle依赖
在project的build.gradle文件中添加:
注意,以下的greendao请输入最新版本。在这里可以查看最新版本
// In your root build.gradle file:buildscript { repositories { jcenter() mavenCentral() // add repository } dependencies { classpath 'com.android.tools.build:gradle:3.0.0' classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' // add plugin }}
在具体的module的build.gradle文件中添加:
// In your app projects build.gradle file:apply plugin: 'com.android.application'apply plugin: 'org.greenrobot.greendao' // apply plugindependencies { compile 'org.greenrobot:greendao:3.2.2' // add library}
2. 设置数据库版本等信息
在module的build.gradle文件添加:
greendao { schemaVersion 1}
schemaVersion的值表示数据库版本号。
另外,用户还可以设置daoPackage属性。
- daoPackage表示通过gradle插件生成的数据库相关文件的包名,默认为你的entity所在的包名。
3. 编写实体类
@Entitypublic class Player { @Id private Long id; @Unique private String name; private Integer age;}
点击build后,AndroidStudio会自动生成这个类的其他部分:
@Entitypublic class Player { @Id private Long id; @Unique private String name; private Integer age; @Generated(hash = 1461101279) public Player(Long id, String name, Integer age) { this.id = id; this.name = name; this.age = age; } @Generated(hash = 30709322) public Player() { } public Long getId() { return this.id; } public void setId(Long id) { this.id = id; } public String getName() { return this.name; } public void setName(String name) { this.name = name; } public Integer getAge() { return this.age; } public void setAge(Integer age) { this.age = age; }}
同时,AS会默认在GreenDAOLearn\app\build\generated\source\greendao\com\ysx\greendaolearn\entity
目录下生成三个文件:
- DaoMaster.java
- DaoSession.java
- PlayerDao.java
由于我们在.gitignore中添加了build,则该目录下的文件不会放在git库中,这些代码每次build的时候都会重新生成。
实体类中常用的注解:
@Entity 表明这个实体类会在数据库中生成一个与之相对应的表。 @Id 对应数据表中的 Id 字段,有了解数据库的话,是一条数据的唯一标识。 @Property(nameInDb = “STUDENTNUM”) 表名这个属性对应数据表中的 STUDENTNUM 字段。 @Property 可以自定义字段名,注意外键不能使用该属性 @NotNull 该属性值不能为空 @Transient 该属性不会被存入数据库中 @Unique 表名该属性在数据库中只能有唯一值
4. 操作数据库
初始化数据库:
/** * 数据库名称 */ private static final String DATABASE_NAME = "players.db"; private DaoSession mDaoSession; /** * 初始化DaoSession * 即获取一个全局的DaoSession实例 * // TODO: 2017/10/31 可以使用一个单例类单独管理这个对象 */ private void initDaoSession() { DaoMaster.OpenHelper openHelper = new DaoMaster.DevOpenHelper( mContext.getApplicationContext(), DATABASE_NAME, null); DaoMaster daoMaster = new DaoMaster(openHelper.getWritableDatabase()); mDaoSession = daoMaster.newSession(); }
全局保存一个DaoSession对象,用来对数据库进行操作。
增
/** * 插入一条数据 * * @param player */ private void insertData(Player player) { PlayerDao playerDao = mDaoSession.getPlayerDao(); playerDao.insert(player); }
删
/** * 根据id删除一条数据 * * @param id */ private void deleteData(long id) { PlayerDao playerDao = mDaoSession.getPlayerDao(); playerDao.deleteByKey(id); }
改
/** * 更新一条数据 * 更新年龄 * * @param id * @param age */ private void updateData(long id, int age) { Log.d(TAG, "updateData: id: " + id + ", age: " + age); PlayerDao playerDao = mDaoSession.getPlayerDao(); Player player = playerDao.queryBuilder() .where(PlayerDao.Properties.Id.eq(id)) .build() .unique(); player.setAge(age); playerDao.update(player); }
查
/** * 获取全部数据,按照Id升序排列 * * @return 数据列表 */ private List<Player> getAllData() { PlayerDao playerDao = mDaoSession.getPlayerDao(); return playerDao.queryBuilder() .orderAsc(PlayerDao.Properties.Id) .build() .list(); }
混淆配置
-keep class org.greenrobot.greendao.**{*;}-keepclassmembers class * extends org.greenrobot.greendao.AbstractDao {public static java.lang.String TABLENAME;}-keep class **$Properties
Demo源代码地址
参考
http://blog.csdn.net/zone_/article/details/69054997
http://blog.csdn.net/njweiyukun/article/details/51893092
阅读全文
0 0
- GreenDAO 学习笔记-小白教程(一)GreenDAO的简介和基本使用
- GreenDAO 学习笔记-小白教程(二)使用单例类来管理DaoSession
- GreenDao 使用教程 一
- GreenDao的学习和使用
- GreenDao 3.2.0 的基本使用教程
- GreenDao的使用简介
- GreenDao 的基本使用
- greenDao的基本使用
- greenDao的基本使用
- GreenDao的基本使用
- greenDao的基本使用
- greenDao的使用教程
- GreenDAO 学习笔记-小白教程(三)数据库升级及注意事项
- greenDao Orm 基本使用<一>
- GreenDAO的使用基本篇
- greenDao的简单使用教程
- greenDAO的简单使用(一)
- GreenDao的使用思路,greendao的基本和概念的讲解
- 9. Spark SQL:JDBC数据源实战
- D
- vector 数组 二维数组
- Linux-萤烛之光
- Nginx负载均衡算法分析
- GreenDAO 学习笔记-小白教程(一)GreenDAO的简介和基本使用
- 浅谈auto_ptr智能指针
- SpringBoot CXF "interceptor for [XXX] has thrown exception, could not send message"
- 用电量
- 2017年10月30日作业
- dedecms无法上传图片
- E
- 3D打印软件Cura的二次开发(GUI)--环境搭建
- SylixOS内存泄漏检测