GreenDao的使用

1.创建一个Java工程

1-1.引包:

加入jar包:
这里写图片描述
右键:add to build path:
这里写图片描述
编译后:
这里写图片描述
(eclipse需要两个包,Android studio只需要后一个包)

1-2.创建Java文件

1-2-1.建包(最好和你的工程包名相同)
1-2-2.在与src同级的目录下创建一个名为src-gen的包
这里写图片描述
1-2-3.创建java文件

package com.example.greendao;

import java.io.IOException;

import de.greenrobot.daogenerator.DaoGenerator;
import de.greenrobot.daogenerator.Entity;
import de.greenrobot.daogenerator.Schema;

public class GreenDao {
    public static void main(String args[]) {
        String path = "src-gen";
        Schema schema = new Schema(1, "com.example.greendao");//生成的类的路径
        addEntity(schema);//调用静态方法
        try {
            new DaoGenerator().generateAll(schema, path);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    public static void addEntity(Schema schema) {
        Entity entity = schema.addEntity("Student");//Student:生成的实体类类名
        entity.addLongProperty("_id").primaryKey().autoincrement();
        //entity.addIdProperty().primaryKey().autoincrement();//主键的两种不同的写法
        entity.addStringProperty("name");
        entity.addStringProperty("sex");
        entity.addStringProperty("age");
        entity.addStringProperty("number");
        entity.addLongProperty("grade");

        //一个表一个实体类,如果还要创建其他的表,可以在这里接着创建Entity对象
    }

}

1-2-4.编译后的结果
这里写图片描述

注:如果是eclipse,可以直接移到Android工程与src同级目录下.

1.
这里写图片描述
2.
这里写图片描述
3.
这里写图片描述

如果是Android studio,可以直接将生成的文件拷贝到studio里.

2.创建Android工程

2-1.引包
compile 'de.greenrobot:greendao:2.0.0'
2-2.在BaseApplication中创建DaoMaster单例模式对象并获取DaoSession对象
package com.example.greendaodemo;

import android.app.Application;
import android.content.Context;

public class BaseApplication extends Application {
    private static DaoMaster daoMaster;
    private static DaoSession daoSession;
    private static Context mContext;

    @Override
    public void onCreate() {
        super.onCreate();
        if (mContext == null) {
            mContext = getApplicationContext();
        }
    }

    public static Context getmContext() {
        return mContext;
    }
// 获取DaoMaster单例模式对象
    public static DaoMaster getDaoMaster() {
        if (daoMaster == null) {
            DaoMaster.DevOpenHelper helper =
                    new DaoMaster.DevOpenHelper(mContext, Constants.DATABASE_NAME, null);
            daoMaster = new DaoMaster(helper.getWritableDatabase());
        }
        return daoMaster;
    }

    //获取DaoSession对象
    public static DaoSession getDaoSession() {
        if (daoSession == null) {
            if (daoMaster == null) {
                daoMaster = getDaoMaster();
            }
            daoSession = daoMaster.newSession();
        }
        return daoSession;
    }
}
2-3.创建dbHelper类
package com.example.greendaodemo;

import java.util.List;

import de.greenrobot.dao.query.QueryBuilder;

public class StudentDBHelper {
    //创建单例模式
    private static StudentDBHelper instance;
    //从BaseApplication获得的DaoSession单例对象
    private static DaoSession daoSession;

    //与单例模式搭配使用,保证只有一个实例对象
    private StudentDBHelper() {
    }

    public static StudentDBHelper getInstance() {
        if (instance == null) {
            instance = new StudentDBHelper();
            daoSession = getDaoSession();
        }
        return instance;
    }

    public static DaoSession getDaoSession() {
        if (daoSession == null) {
            daoSession = BaseApplication.getDaoSession();
        }
        return daoSession;
    }

    //返回数据库表的条数,返回值是long型
    public long getCount() {
        return daoSession.getStudentDao().count();
    }

    //插入
    //1.插入集合,无返回值
    public void insertList(List<Student> entities) {
        daoSession.getStudentDao().insertOrReplaceInTx(entities);
    }

    //2.插入对象,返回值是long型
    public long insert(Student entity) {
        return daoSession.getStudentDao().insert(entity);
    }

    //删除方法,无返回值
    public void delete(Student entity) {
        daoSession.getStudentDao().delete(entity);
    }

    //根据某一字段查询,返回值为一个集合
    public List<Student> queryType(String username) {
        QueryBuilder<Student> db = daoSession.getStudentDao().queryBuilder();
        //限制每次取多少数据
        db.limit(20);
        //定义查询条件 and关系
        db.where(StudentDao.Properties.Name.eq(username));
        return db.list();
    }

    public List<Student> queryByName(String name, String sex) {
        QueryBuilder<Student> db = daoSession.getStudentDao().queryBuilder();
        db.where(StudentDao.Properties.Name.eq(name),
                StudentDao.Properties.Age.eq(sex));
        return db.list();
    }

    public List<Student> query(String name) {
        return daoSession.getStudentDao().queryBuilder().where(StudentDao.Properties.Name.eq(name)).list();
    }
}

3.用法

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值