GreenDao3.0简单使用

本文详细介绍GreenDao3.0的使用方法,包括环境搭建、实体类定义、数据库操作及升级策略等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于GreenDao

greenDao是一个将对象映射到SQLite数据库中的轻量且快速的ORM解决方案。
关于greenDAO的概念可以看官网greenDAO
greenDAO 优势`
1、一个精简的库
2、性能最大化
3、内存开销最小化
4、易于使用的 APIs
5、对 Android 进行高度优化
GreenDao 3.0使用
GreenDao 3.0采用注解的方式来定义实体类,通过gradle插件生成相应的代码。
一,在build.gradle中进行配置:

buildscript {  
    repositories {  
        mavenCentral()  
    }  
    dependencies {  
        classpath 'org.greenrobot:greendao-gradle-plugin:3.2.0'  
    }  
}  

apply plugin: 'org.greenrobot.greendao'  

dependencies {  
    compile 'org.greenrobot:greendao:3.2.0'  
}  

二、GreenDaoUpgradeHelper是一个greenDao的数据库升级帮助类。使用它可以很容易解决数据库升级问题

1.在根目录的build.gradle文件的repositories内添加如下代码:

allprojects {  
       repositories {  
           ...  
           maven { url "https://jitpack.io" }  
       }  
   }  

2.添加依赖(greendao 3.0)

dependencies {  
            compile 'com.github.yuweiguocn:GreenDaoUpgradeHelper:v1.1.0'  
    }  

三,自定义路径

greendao {  
    schemaVersion 1  
    daoPackage 'com.greendao.gen'  
    targetGenDir 'src/main/java'  
}  

在gradle的根模块中加入上述代码,就完成了我们的基本配置了。
属性介绍:
schemaVersion–> 指定数据库schema版本号,迁移等操作会用到;
daoPackage –> dao的包名,包名默认是entity所在的包;
targetGenDir –> 生成数据库文件的目录;

四,创建一个User的实体类

@Entity  
public class User {  
    @Id   
    private Long id;   
    private String name;   
    @Transient   
    private int tempUsageCount; // not persisted    
}  

五,MakeProject

编译项目,User实体类会自动编译,生成get、set方法并且会在com.anye.greendao.gen目录下生成三个文件;

这里写图片描述

GreenDao使用

public class MyApp extends Application {

    private SQLiteDatabase db;
    private DaoMaster mDaoMaster;
    private DaoSession mDaoSession;
    private static MyApp instances;


    @Override
    public void onCreate() {
        instances = this;
        super.onCreate();
        setDatabase();
    }

    public DaoMaster getmDaoMaster() {
        return mDaoMaster;
    }

    public DaoSession getmDaoSession() {
        return mDaoSession;
    }

    public SQLiteDatabase getDb() {
        return db;
    }

    private void setDatabase() {
        //通过 DaoMaster 的内部类 DevOpenHelper,你可以得到一个便利的 SQLiteOpenHelper 对象。
        // 可能你已经注意到了,你并不需要去编写「CREATE TABLE」这样的 SQL 语句,因为 greenDAO 已经帮你做了。
        // 注意:默认的 DaoMaster.DevOpenHelper 会在数据库升级时,删除所有的表,意味着这将导致数据的丢失。
        // 所以,在正式的项目中,你还应该做一层封装,来实现数据库的安全升级。
        DaoMaster.OpenHelper openHelper = new DaoMaster.DevOpenHelper(this, "USER", null);
        db = openHelper.getWritableDatabase();
        mDaoMaster = new DaoMaster(db);
        mDaoSession = mDaoMaster.newSession();
    }

    public static MyApp getInstances() {
        return instances;
    }
}

MainActivity

“`
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Button mAdd,mDelete,mUpdate,mFind;
private TextView mContext;
private User mUser;

private UserDao mUserDao;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    initView();
    initEvent();
    mUserDao = MyApp.getInstances().getmDaoSession().getUserDao();
}

private void initView() {
    mContext = (TextView) findViewById(R.id.textView);
    mAdd = (Button) findViewById(R.id.button);
    mDelete = (Button) findViewById(R.id.button2);
    mUpdate = (Button) findViewById(R.id.button3);
    mFind = (Button) findViewById(R.id.button4);
}

private void initEvent() {
    mAdd.setOnClickListener(this);
    mDelete.setOnClickListener(this);
    mUpdate.setOnClickListener(this);
    mFind.setOnClickListener(this);
}

@Override
public void onClick(View view) {
    switch (view.getId()) {
        case R.id.button:
            addDate();
            break;
        case R.id.button2:
            deleteDate();
            break;
        case R.id.button3:
            updateDate();
            break;
        case R.id.button4:
            findDate();
            break;
    }
}
/**
 * 增加数据
 */
private void addDate() {
    mUser = new User((long)1,"anye3");
    mUserDao.insert(mUser);//添加一个
    mContext.setText(mUser.getName());
}

/**
 * 删除数据
 */
private void deleteDate() {
    deleteUserById(1);
}

/**
 * 根据主键删除User
 *
 * @param id User的主键Id
 */
public void deleteUserById(long id) {
    mUserDao.deleteByKey(id);
}

/**
 * 更改数据
 */
private void updateDate() {
    mUser = new User((long)1,"anye0803");
    mUserDao.update(mUser);
}

/**
 * 查找数据
 */
private void findDate() {
    List<User> users = mUserDao.loadAll();
    String userName = "";
    for (int i = 0; i < users.size(); i++) {
        userName += users.get(i).getName()+",";
    }
    mContext.setText("查询全部数据==>"+userName);
}

}

更多查询 http://blog.youkuaiyun.com/a284266978/article/details/44983927

布局代码很简单,就在这里省略了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值