第1步:在module的build.gradle里加入引用
implementation 'org.greenrobot:greendao:3.2.2'
implementation 'org.greenrobot:greendao-generator:3.2.2'
并在顶部第加入:
//在 apply plugin: 'com.android.application' 下面加入即可
apply plugin: 'org.greenrobot.greendao'
在android的节点下加入:
greendao {
schemaVersion 1//数据库版本号
daoPackage 'com.greendaodemo.www.greendao'//设置DaoMaster、DaoSession、Dao包名
targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录
}
在项目的build.gradle的dependencies加入:
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2'
第2步:新建bean类,比如User,并定义出属性,不用添加getter和setter方法,并在类上添加注解@Entity(注意添加一个long类型的id)
import org.greenrobot.greendao.annotation.Entity;
@Entity
public class User {
private long id;
private String name;
private int age;
private double money;
}
第3步:点击build下的Make Module
然后可以看到User类已经发生变化:
并且在自定义的路径下自动生成了3个类:
第4步:初始化GreenDao,个人建议新建一个DBUtil,专门去处理和数据库操作的业务逻辑,比如:通过id查找用户,通过名字查找用户,删除用户等等操作,献上我的demo里的Util
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import com.greendaodemo.www.User;
import com.greendaodemo.www.greendao.DaoMaster;
import com.greendaodemo.www.greendao.DaoSession;
import com.greendaodemo.www.greendao.UserDao;
import java.util.List;
public class DBUtil {
private static final String DB_NAME = "demo.db";
private static DaoSession mDaoSession;
public static void initDBUtil(Context context) {
SQLiteOpenHelper mHelper = new DaoMaster.DevOpenHelper(context, DB_NAME, null);
SQLiteDatabase db = mHelper.getWritableDatabase();
// 注意:该数据库连接属于 DaoMaster,所以多个 Session 指的是相同的数据库连接。
DaoMaster mDaoMaster = new DaoMaster(db);
mDaoSession = mDaoMaster.newSession();
}
/**
* 通过id查user
*
* @param id
* @return
*/
public static User getUserById(long id) {
return mDaoSession.getUserDao().loadByRowId(id);
}
/**
* 通过名字查询,返回列表
*
* @param name
* @return
*/
public static List<User> getUserByName(String name) {
List<User> userList = mDaoSession.getUserDao().queryBuilder()
.where(UserDao.Properties.Name.eq(name))
// .orderDesc(UserDao.Properties.Id)
.list();
return userList;
}
/**
* 添加user
*
* @param user
* @return
*/
public static long addUser(User user) {
return mDaoSession.getUserDao().insert(user);
}
/**
* 通过id修改user
*
* @param user
*/
public static void updateUserById(User user) {
mDaoSession.getUserDao().update(user);
}
/**
* 通过id删除user
*
* @param id
*/
public static void deleteUserById(long id) {
mDaoSession.getUserDao().deleteByKey(id);
}
/**
* 读取所有user
*
* @return
*/
public static List<User> getAllUser() {
return mDaoSession.getUserDao().loadAll();
}
/**
* 删除所有user
*
* @return
*/
public static void deleteAllUser() {
mDaoSession.getUserDao().deleteAll();
}
}
最后在application里的onCreate里初始化一下就可以用了:
DBUtil.initDBUtil(this);
最后说明一下,数据库在升级的时候,会导致原数据丢失,防止数据丢失方法请看GreenDao数据库升级防止数据丢失工具类
module下载地址:https://download.csdn.net/download/u012954039/10942011
注意是module,不是project!!!!