使用步骤:
1.module的build.gradle添加:
apply plugin: 'org.greenrobot.greendao'//添加
2.module的build.gradle依赖添加:
compile'org.greenrobot:greendao:3.0.1'
compile'org.greenrobot:greendao-generator:3.0.0'
3.module的build.gradle根级别下配置:
greendao {
schemaVersion 1 //数据库版本号
daoPackage 'com.paradoxie.demo.dao' //生成的dao路径
targetGenDir 'src/main/java' //数据库文件的目录
}
4.在project的在build.gradle中配置:
dependencies {
classpath 'com.android.tools.build:gradle:2.2.1'
classpath 'org.greenrobot:greendao-gradle-plugin:3.0.0'//添加
}
5.编写java实体类,注意注解:
@Entity
public class Advert {
@Id
private Long id;//主键id,必须Long型
private String classify;//广告类型
private String times;//广告次数
private String time;//广告时长
更多注解类型不在此列出,写完以上实体类属性后,编译,编译,编译,自动生成get、set内容以及第三步中配置的com.paradoxie.demo.dao目录下三个文件,就是这个:
6.编写MyOpenHelper,升级数据库使用,初步使用可以忽略:
7.编写核心类DbCore,构造方法略过,主要是两个静态方法:
public static DaoMaster getDaoMaster() {
if (daoMaster == null) {
//自定义辅助类;DevOpenHelper 会在数据库升级时,删除所有的表,意味着这将导致数据的丢失,此处使用OpenHelper。
DaoMaster.OpenHelper helper = new MyOpenHelper(mContext, DB_NAME);
daoMaster = new DaoMaster(helper.getWritableDatabase());
}
return daoMaster;
}
public static DaoSession getDaoSession() {
if (daoSession == null) {
if (daoMaster == null) {
daoMaster = getDaoMaster();
}
daoSession = daoMaster.newSession();
}
return daoSession;
}
8.在自定义MyApplication中初始化:
@Override
public void onCreate() {
super.onCreate();
//初始化数据库
DbCore.init(this);
}
9.实例化mAdvertDao后,用其操作实体bean对象,例如:
mAdvertDao.insert(T entity);//增
mAdvertDao.delete(T entity);//删,也可deleteByKey(K key)
mAdvertDao.update(T entity);//改
mAdvertDao.load(K key);//查
GreenDao 3.0简单实战:
1.)通过上面使用方式我们可以获取DaoMaster 、DaoSession、Dao类
public class DBManager { private final static String dbName = "test_db"; private static DBManager mInstance; private DaoMaster.DevOpenHelper openHelper; private Context context; public DBManager(Context context) { this.context = context; openHelper = new DaoMaster.DevOpenHelper(context, dbName, null); } /** * 获取单例引用 * * @param context * @return */ public static DBManager getInstance(Context context) { if (mInstance == null) { synchronized (DBManager.class) { if (mInstance == null) { mInstance = new DBManager(context); } } } return mInstance; } }
2.)获取可读可写数据库
/** * 获取可读数据库 */ private SQLiteDatabase getReadableDatabase() { if (openHelper == null) { openHelper = new DaoMaster.DevOpenHelper(context, dbName, null); } SQLiteDatabase db = openHelper.getReadableDatabase(); return db; }
/** * 获取可写数据库 */ private SQLiteDatabase getWritableDatabase() { if (openHelper == null) { openHelper = new DaoMaster.DevOpenHelper(context, dbName, null); } SQLiteDatabase db = openHelper.getWritableDatabase(); return db; }
3.)插入数据
/** * 插入一条记录 * * @param user */ public void insertUser(User user) { DaoMaster daoMaster = new DaoMaster(getWritableDatabase()); DaoSession daoSession = daoMaster.newSession(); UserDao userDao = daoSession.getUserDao(); userDao.insert(user); } /** * 插入用户集合 * * @param users */ public void insertUserList(List<User> users) { if (users == null || users.isEmpty()) { return; } DaoMaster daoMaster = new DaoMaster(getWritableDatabase()); DaoSession daoSession = daoMaster.newSession(); UserDao userDao = daoSession.getUserDao(); userDao.insertInTx(users); }
4.)删除数据
/** * 删除一条记录 * * @param user */ public void deleteUser(User user) { DaoMaster daoMaster = new DaoMaster(getWritableDatabase()); DaoSession daoSession = daoMaster.newSession(); UserDao userDao = daoSession.getUserDao(); userDao.delete(user); }
5.)更新数据
/** * 更新一条记录 * * @param user */ public void updateUser(User user) { DaoMaster daoMaster = new DaoMaster(getWritableDatabase()); DaoSession daoSession = daoMaster.newSession(); UserDao userDao = daoSession.getUserDao(); userDao.update(user); }
6.)查询数据
/** * 查询用户列表 */ public List<User> queryUserList() { DaoMaster daoMaster = new DaoMaster(getReadableDatabase()); DaoSession daoSession = daoMaster.newSession(); UserDao userDao = daoSession.getUserDao(); QueryBuilder<User> qb = userDao.queryBuilder(); List<User> list = qb.list(); return list; } /** * 查询用户列表 */ public List<User> queryUserList(int age) { DaoMaster daoMaster = new DaoMaster(getReadableDatabase()); DaoSession daoSession = daoMaster.newSession(); UserDao userDao = daoSession.getUserDao(); QueryBuilder<User> qb = userDao.queryBuilder(); qb.where(UserDao.Properties.Age.gt(age)).orderAsc(UserDao.Properties.Age); List<User> list = qb.list(); return list; }
7.)测试程序
DBManager dbManager = DBManager.getInstance(this); for (int i = 0; i < 5; i++) { User user = new User(); user.setId(i); user.setAge(i * 3); user.setName("第" + i + "人"); dbManager.insertUser(user); } List<User> userList = dbManager.queryUserList(); for (User user : userList) { Log.e("TAG", "queryUserList--before-->" + user.getId() + "--" + user.getName() +"--"+user.getAge()); if (user.getId() == 0) { dbManager.deleteUser(user); } if (user.getId() == 3) { user.setAge(10); dbManager.updateUser(user); } } userList = dbManager.queryUserList(); for (User user : userList) { Log.e("TAG", "queryUserList--after--->" + user.getId() + "---" + user.getName()+"--"+user.getAge()); }运行结果
参考来源
http://www.apkbus.com/blog-705730-62575.html