Android之数据库Greedao的使用

来源:互联网 发布:盘锦中小企业seo 编辑:程序博客网 时间:2024/06/05 12:39

我相信,在平时的开发过程中,大家一定会或多或少地接触到数据库。然而在使用它时,我们往往需要做许多额外的工作,像编写 SQL 语句与解析查询结果等。所以,适用于 Android 的greedao数据库也就孕育而生,简单的讲,greenDAO 是一个将对象映射到 SQLite 数据库中的轻量且快速的解决方案。

GREENDAO 设计的好处

  • 一个精简的库

  • 性能最大化

  • 内存开销最小化

  • 易于使用的 APIs

  • 对 Android 进行高度优化

给提供一篇关于greenDAO的文章,里面详细的介绍Android studio搭建greenDao:http://www.open-open.com/lib/view/open1438065400878.html

如何开始

现在我们就来讲一下greedao的简单使用吧!!!
首先,和往常一样导入依赖包,进行配置greedao数据库
compile 'org.greenrobot:greendao:3.0.1'compile 'org.greenrobot:greendao-generator:3.0.0'
build.gradle配置
apply plugin: 'org.greenrobot.greendao'buildscript {    repositories {        mavenCentral()    }    dependencies {        classpath 'org.greenrobot:greendao-gradle-plugin:3.0.0'    }}greendao {    schemaVersion 1    daoPackage 'com.wyk.greendaodemo.greendao.gen'    targetGenDir 'src/main/java'}
需要实现一个Bean对象进行保存数据
import org.greenrobot.greendao.annotation.Entity;import org.greenrobot.greendao.annotation.Id;import org.greenrobot.greendao.annotation.Transient;import org.greenrobot.greendao.annotation.Generated;@Entity //指定为数据库类的对象public class User {      @Id   //此ID必须有且为long类型    private Long id;      private String name;    @Transient  //这个注解意思为这个属性不会保存到数据库为属性 在数据库中不对这个属性进行操作    private int tempUsageCount; // not persisted
    public String getName() {        return this.name;   //下面的方法自己无需定义 点击studio上方Build->Make Project会自动生成文件    }    public void setName(String name) {        this.name = name;    }    public Long getId() {        return this.id;    }    public void setId(Long id) {        this.id = id;    }    @Generated(hash = 873297011)    public User(Long id, String name) {        this.id = id;        this.name = name;    }    @Generated(hash = 586692638)    public User() {    }    @Override    public String toString() {        return "User{" +                "id=" + id +                ", name='" + name + '\'' +                ", tempUsageCount=" + tempUsageCount +                '}';    }}
自己生成的三个核心类


基本上这样的配置就算完成了,简单的写一下增删改查的
创建一个类继承Application初始化数据库:
import android.app.Application;import com.wyk.greendaodemo.greendao.gen.DaoMaster;import com.wyk.greendaodemo.greendao.gen.UserDao;/** * Created by 15218 on 2017/11/7. */public class App extends Application {    private UserDao userDao;    //暴露给外部使用此数据库    public UserDao getUserDao() {        return userDao;    }    @Override    public void onCreate() {        super.onCreate();        //对数据库进行初始化    liu.db 数据库的名字        DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(this,"liu.db");        DaoMaster daoMaster = new DaoMaster(devOpenHelper.getWritableDb());        userDao = daoMaster.newSession().getUserDao();    }}
这样我们的逻辑就好写了吧,在我们的Mantivity里边得到数据库,进行对数据库的操作
import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.Toast;import com.wyk.greendaodemo.greendao.gen.UserDao;import org.greenrobot.greendao.query.QueryBuilder;import java.util.ArrayList;import java.util.List;
public class MainActivity extends AppCompatActivity {    private UserDao userDao;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        App app = (App) getApplication();//得到数据库使用        userDao = app.getUserDao();    }    public void add(View v){//添加单条数据        User u = new User(null,"刘备");        userDao.insert(u);    }    public void addAll(View v){//批量添加        userDao.insertInTx(new User[]{new User(null,"达摩"),                new User(null,"赵云"),                new User(null,"亚瑟")        ,new User(null,"吕布")});    }    public void delete(View v){//删除单条        userDao.deleteByKey((long) 1);    }    public void deleteAll(View v){  //批量删除        userDao.deleteAll();    }    public void updata(View v){   //修改单条        User u = new User(Long.valueOf(1),"孙尚香");        userDao.update(u);    }    public void updataAll(View v){   //批量修改        userDao.updateInTx(new User[]{                new User(Long.valueOf(2),"孙尚香1"),                new User(Long.valueOf(3),"孙尚香2")                ,new User(Long.valueOf(4),"孙尚香3")        });    }    public void select(View v){   //条件查询        QueryBuilder<User> userQueryBuilder = userDao.queryBuilder();        List<User> list = userQueryBuilder.build().list();        List<String> l = new ArrayList<>();        for (int i=0;i<list.size();i++){            l.add(list.get(i).getName());        }        Toast.makeText(MainActivity.this,l.toString(),Toast.LENGTH_SHORT).show();    }    public void selectAll(View v){  //查询所有        List<User> users = userDao.loadAll();        //吐司事件        Toast.makeText(MainActivity.this,users.toString(),Toast.LENGTH_SHORT).show();    }}
Mantivity.xml文件:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:orientation="vertical"    android:layout_height="match_parent"    tools:context="liuhao.baway.com.liuhao_greedao.MainActivity">    <Button        android:text="单个添加"        android:onClick="add"        android:layout_width="match_parent"        android:layout_height="wrap_content" />    <Button        android:text="批量添加"        android:onClick="addAll"        android:layout_width="match_parent"        android:layout_height="wrap_content" />    <Button        android:text="单个删除"        android:onClick="delete"        android:layout_width="match_parent"        android:layout_height="wrap_content" />    <Button        android:text="批量删除"        android:onClick="deleteAll"        android:layout_width="match_parent"        android:layout_height="wrap_content" />    <Button        android:text="单个修改"        android:onClick="updata"        android:layout_width="match_parent"        android:layout_height="wrap_content" />    <Button        android:text="多条修改"        android:onClick="updataAll"        android:layout_width="match_parent"        android:layout_height="wrap_content" />    <Button        android:text="条件查询"        android:onClick="select"        android:layout_width="match_parent"        android:layout_height="wrap_content" />    <Button        android:text="查询全部"        android:onClick="selectAll"        android:layout_width="match_parent"        android:layout_height="wrap_content" /></LinearLayout>
效果:

Sqlite中显示的

以上就是greedao数据库最简单的使用操作啦,后续会进一步的研究一些注解和一些关于数据库关联的操作。
推荐文章:Greedao的注解  http://blog.csdn.net/bugproof/article/details/52074959
Greedao的关联  http://blog.csdn.net/u010687392/article/details/48496299
Greedao的操作  http://blog.csdn.net/njweiyukun/article/details/51893092