GreenDao的使用

来源:互联网 发布:获取php版本号 编辑:程序博客网 时间:2024/06/18 12:00

1、在app的Gradle中配置:

apply plugin'org.greenrobot.greendao'
dependencies {
        compile 'org.greenrobot:greendao:3.2.0'

}

2、在project的Gradle中配置:

dependencies {         classpath 'org.greenrobot:greendao-gradle-plugin:3.2.1'     } }
3.在app的Gradle(android)配置数据库版本等信息

greendao {
schemaVersion 1
daoPackage 'com.bwie.test.greendaodemo.gen'
targetGenDir 'src/main/java'
}
schemaVersion       对应当前数据库版本

daoPackage  GreenDao自动生成代码所在的包名,默认的是在项目包下面新建一个gen

targetGenDir    设置自动生成代码的目录

4.创建实体类,是根据需求创建的。

  1. @Entity  
  2. public class User {  
  3.     @Id  
  4.     private Long id;  
  5.     @Property(nameInDb = "USERNAME")  
  6.     private String username;  
  7.     @Property(nameInDb = "NICKNAME")  
  8.     private String nickname;  
  9. }  
5.数据库的初始化

  1. DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(getApplicationContext(), "lenve.db"null);  
  2.         DaoMaster daoMaster = new DaoMaster(devOpenHelper.getWritableDb());  
  3.         DaoSession daoSession = daoMaster.newSession();  

6.操作实体类,首先获取UserDao对象

  1. UserDao userDao = daoSession.getUserDao();  

7.操作数据库就可以了,下面来看看简单的增删改查

@1.添加数据

数据库的增删改查我们都将通过UserDao来进行,插入操作如下:

[java] view plain copy
 
 
  1. User user = new User(null"zhangsan" + random.nextInt(9999),"张三");  
  2.         userDao.insert(user);  
User的第一个参数为id,这里传null的话在插入的过程中id字段会自动增长(现在知道为什么id要为Long类型了吧!)第二个参数是username,每次插入时生成一个随机数,避免重复。

@2.删除数据

删除数据和修改数据的思路一样,都是要先查找到数据:

[java] view plain copy
 
 
  1. List<User> userList = (List<User>) userDao.queryBuilder().where(UserDao.Properties.Id.le(10)).build().list();  
  2.         for (User user : userList) {  
  3.             userDao.delete(user);  
  4.         }  

where表示查询条件,这里我是查询id小于等于10的数据,where中的参数可以有多个,就是说可以添加多个查询条件。最后的list表示查询结果是一个List集合,如果你只想查询一条数据,最后unique即可。当然,我们也可以根据id来删除数据:

[java] view plain copy
 
 
  1. User user = userDao.queryBuilder().where(UserDao.Properties.Id.eq(16)).build().unique();  
  2.         if (user == null) {  
  3.             Toast.makeText(MainActivity.this"用户不存在", Toast.LENGTH_SHORT).show();  
  4.         }else{  
  5.             userDao.deleteByKey(user.getId());  
  6.         }  
也可以将表中所有数据一次删除:

[java] view plain copy
 
 
  1. userDao.deleteAll();  




@3.修改数据

修改数据也是先查询,再修改:

[java] view plain copy
 
 
  1. User user = userDao.queryBuilder()  
  2.                 .where(UserDao.Properties.Id.ge(10), UserDao.Properties.Username.like("%90%")).build().unique();  
  3.         if (user == null) {  
  4.             Toast.makeText(MainActivity.this"用户不存在!", Toast.LENGTH_SHORT).show();  
  5.         }else{  
  6.             user.setUsername("王五");  
  7.             userDao.update(user);  
  8.         }  

这里我添加了两个查询条件,一个是id要大于等于10,同是还要满足username like %90%,注意最后的unique表示只查询一条数据出来即可。

@4.查询数据

[java] view plain copy
 
 
  1. List<User> list = userDao.queryBuilder()  
  2.                 .where(UserDao.Properties.Id.between(213)).limit(5).build().list();  
  3.         for (int i = 0; i < list.size(); i++) {  
  4.             Log.d("google_lenve""search: " + list.get(i).toString());  
  5.         }  

其实上面删除和修改都已经涉及到查询了,查询里边有许多非常好用的函数,我这里举两个例子between表示查询id介于2到13之间的数据,limit表示查询5条数据。

下面就来看看数据库升级的代码吧

首先在module的gradle文件中修改版本号:

修改

gradle文件

[java] view plain copy
 
 
  1. //这里改为最新的版本号  
  2. schemaVersion 2  
  3. targetGenDir 'src/main/java'  
修改实体类
[java] view plain copy
 
 
  1. @Entity  
  2. public class User {  
  3.     @Property  
  4.     private int age;  
  5.     @Property  
  6.     private String password;  
  7.     @Id  
  8.     private Long id;  
  9.     @Property(nameInDb = "USERNAME")  
  10.     private String username;  
  11.     @Property(nameInDb = "NICKNAME")  
  12.     private String nickname;  
  13. }  
原创粉丝点击