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.创建实体类,是根据需求创建的。
- @Entity
- public class User {
- @Id
- private Long id;
- @Property(nameInDb = "USERNAME")
- private String username;
- @Property(nameInDb = "NICKNAME")
- private String nickname;
- }
5.数据库的初始化
- DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(getApplicationContext(), "lenve.db", null);
- DaoMaster daoMaster = new DaoMaster(devOpenHelper.getWritableDb());
- DaoSession daoSession = daoMaster.newSession();
6.操作实体类,首先获取UserDao对象
- UserDao userDao = daoSession.getUserDao();
7.操作数据库就可以了,下面来看看简单的增删改查
@1.添加数据
数据库的增删改查我们都将通过UserDao来进行,插入操作如下:
- User user = new User(null, "zhangsan" + random.nextInt(9999),"张三");
- userDao.insert(user);
User的第一个参数为id,这里传null的话在插入的过程中id字段会自动增长(现在知道为什么id要为Long类型了吧!)第二个参数是username,每次插入时生成一个随机数,避免重复。
@2.删除数据
删除数据和修改数据的思路一样,都是要先查找到数据:
- List<User> userList = (List<User>) userDao.queryBuilder().where(UserDao.Properties.Id.le(10)).build().list();
- for (User user : userList) {
- userDao.delete(user);
- }
where表示查询条件,这里我是查询id小于等于10的数据,where中的参数可以有多个,就是说可以添加多个查询条件。最后的list表示查询结果是一个List集合,如果你只想查询一条数据,最后unique即可。当然,我们也可以根据id来删除数据:
- User user = userDao.queryBuilder().where(UserDao.Properties.Id.eq(16)).build().unique();
- if (user == null) {
- Toast.makeText(MainActivity.this, "用户不存在", Toast.LENGTH_SHORT).show();
- }else{
- userDao.deleteByKey(user.getId());
- }
也可以将表中所有数据一次删除:
- userDao.deleteAll();
@3.修改数据
修改数据也是先查询,再修改:
- User user = userDao.queryBuilder()
- .where(UserDao.Properties.Id.ge(10), UserDao.Properties.Username.like("%90%")).build().unique();
- if (user == null) {
- Toast.makeText(MainActivity.this, "用户不存在!", Toast.LENGTH_SHORT).show();
- }else{
- user.setUsername("王五");
- userDao.update(user);
- }
这里我添加了两个查询条件,一个是id要大于等于10,同是还要满足username like %90%,注意最后的unique表示只查询一条数据出来即可。
@4.查询数据
- List<User> list = userDao.queryBuilder()
- .where(UserDao.Properties.Id.between(2, 13)).limit(5).build().list();
- for (int i = 0; i < list.size(); i++) {
- Log.d("google_lenve", "search: " + list.get(i).toString());
- }
其实上面删除和修改都已经涉及到查询了,查询里边有许多非常好用的函数,我这里举两个例子between表示查询id介于2到13之间的数据,limit表示查询5条数据。
下面就来看看数据库升级的代码吧
首先在module的gradle文件中修改版本号:
修改
gradle文件
-
- schemaVersion 2
- targetGenDir 'src/main/java'
修改实体类
- @Entity
- public class User {
- @Property
- private int age;
- @Property
- private String password;
- @Id
- private Long id;
- @Property(nameInDb = "USERNAME")
- private String username;
- @Property(nameInDb = "NICKNAME")
- private String nickname;
- }