Android之数据库Greedao的使用

我相信,在平时的开发过程中,大家一定会或多或少地接触到数据库。然而在使用它时,我们往往需要做许多额外的工作,像编写 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


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值