数据库在Android 开发中用的还是比较多用来存储数据,以前用过Android原生自带的数据库,这次打算用GreenDao3.0,前面一次项目也用过一次GreenDao3.0 好久了 忘记的差不多了 。
一:介绍一下GreenDao3.0的好处:
它是一个对象关系映射框架,它能提供一个接口去操作对象的方式去操作数据库,能够让你操作数据库变得简单,更加的方便。
响应速速快,内存占用少,库文件很小 ,小于100k,支持加密,简单易用的API
二:使用步骤:
1.在项目的工程下build.gradle引入,再同步一下工程
classpath 'org.greenrobot:greendao-gradle-plugin:3.0.0'
2.在module的build.gradle下引入,在同步工程
apply plugin: 'org.greenrobot.greendao' //是一个插件
3.在dependencies下引入
compile 'org.greenrobot:greendao:3.0.1'
4.在android 闭包下引入
greendao {
/**
* 版本号
*/
schemaVersion 1
/**
* greendao输出dao的数据库操作实体类文件夹(相对路径 包名+自定义路径名称,包将创建于包名的直接路径下)
*/
daoPackage 'wansun.visit.android.greendao.gen'
/**
* greenDao实体类包文件夹
*/
targetGenDir 'src/main/java'
}
5.创建一个实体类 UserBean
/**
* Created by User on 2019/6/5.
*/
@Entity
public class UserBean {
@Id
public Long id;
public String name;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@Generated(hash = 2024802960)
public UserBean(Long id, String name) {
this.id = id;
this.name = name;
}
@Generated(hash = 1203313951)
public UserBean() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
注意以上步骤做完了,一定要编译一下项目,会发现在src/main/java 下面自动生成了一个文件件greendao.gen .如图所示:
6.自定义一个application 初始化GreenDao3.0的相关配置
/**
* Created by User on 2019/5/15.
*/
public class LocklBleApplication extends Application {
//提供全局的上下文环境
public static Context mContext;
private DaoMaster.DevOpenHelper dbHelper;
private SQLiteDatabase db;
private DaoMaster mDaoMaster;
private DaoSession mDaoSession;
prvivate static LockBleApplication;
@Override
public void onCreate() {
super.onCreate();
mContext=getApplicationContext();
app=this;
initDatabass(); //初始化的相关配置
}
public static Context getInstanceContext(){
return mContext;
}
public static LocklBleApplication getInstance(){ return app; }
private void initDatabass() {
//这里之后会修改,关于升级数据库
dbHelper = new DaoMaster.DevOpenHelper(this, "lockBle-db", null);
db = dbHelper.getWritableDatabase();
mDaoMaster = new DaoMaster(db);
mDaoSession = mDaoMaster.newSession();
}
public DaoSession getSession(){
return mDaoSession;
}
public SQLiteDatabase getDb(){
return db;
}
}
7.接下来就是操作数据库,也就是CRUD ,添加一条数据
/** * GreenDao3.0测试 * Created by User on 2019/6/10. */ public class GreenDaoActivity extends BaseActivity { Button but_add,but_qury,but_delect; UserBeanDao dao; @Override public int getLayoutId() { return R.layout.activity_green_dao; } @Override public void initView() { dao = LocklBleApplication.getInstance().getSession().getUserBeanDao(); but_add= (Button) findViewById(R.id.but_add); but_qury= (Button) findViewById(R.id.but_qury); but_delect= (Button) findViewById(R.id.but_delect); } @Override public void initEvent() { /** * 添加数据 */ but_add.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { for (int i = 0; i < 5; i++) { //插入5条数据 UserBean bean=new UserBean(); bean.setId((long) i); bean.setName("张飞"+i); dao.insert(bean); //插入一条数据 } } }); /** * 查询数据 */ but_qury.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ListuserBeen = dao.loadAll(); //查询全部数据 for (UserBean us: userBeen ){ Log.d("TAG","查询数据"+us.getName()); } } }); /** * 删除数据 * 删除数据的方法 1.全部删除实例 2.根据id 3.全部删除 */ but_delect.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dao.deleteByKey((long) 0); //根据id 删除 dao.deleteByKey((long) 1); dao.deleteByKey((long) 2); } }); } @Override public void initData() { } }
如图所示:添加了5条数据,删除3条,查出2条数据