Android Studio 配置使用GreenDao3.0

什么是GreenDao?

  • GreenDao是一款开源的数据库框架,使用它可以方便高效地操作SQLite Database

GreenDao有什么优势?

  • 最高性能(可能是Android最快的ORM); 我们的基准也是开源的
  • 易于使用的功能强大的API涵盖关系和联接
  • 最小的内存消耗
  • Library占用极小(<100KB),以保持您的建立时间较低,并避免65k方法限制
  • 数据库加密:greenDAO支持SQLCipher,以保护用户的数据安全
  • 更多详情请察看GreenDao的官网 —— [ greenDAO ]

在Android Stuidio上快速配置GreenDao

  • 首先导入GreenDao 依赖包,在project视图的app下的gradle里添加如下:
    dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    //wesker add GreenDao start
    compile 'org.greenrobot:greendao:3.0.1'
    compile 'org.greenrobot:greendao-generator:3.0.0'
    //wesker add GreenDao end
    testCompile 'junit:junit:4.12'
}

这里写图片描述

  • 生成GreenDao所依赖的插件,需要去maven仓库下载这个插件。在project视图的app下的gradle里添加
//wesker add GreenDao start
apply plugin: 'org.greenrobot.greendao'

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'org.greenrobot:greendao-gradle-plugin:3.0.0'
    }
}
greendao {
    schemaVersion 1
    daoPackage 'com.greendaodemo.gen'//1
    targetGenDir 'src/main/java'
}
//wekser add GreenDao end

这里写图片描述

名称含义
schemaVersion数据库schema版本号,迁移等操作会用到
daoPackage通过gradle插件生成的数据库相关文件的包名,默认为你的entity所在的包名
targetGenDir自定义生成数据库文件的目录

- 最后还要配置最后一步,在project下的gradle里配置

        classpath 'com.android.tools.build:gradle:2.3.1'
        classpath 'org.greenrobot:greendao-gradle-plugin:3.0.0'

这一步不配置的话可能会报Error:Execution failed for task ‘:app:greendao’.这个错误

这里写图片描述
- 到此GreenDao配置完成,接下来我们来看看怎么使用它吧。

使用GreenDao

  • 编写一个User实体类

这里写图片描述

  • 执行 Build->Make Project。GreenDao会自动帮你生成get和set方法。并且生成如下文件

daoPackage生成的文件

@Entity
public class User {
    @Id(autoincrement = true)
    private Long id;
    private String username;
    @Transient
    private int temp;
    public String getUsername() {
        return this.username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public long getId() {
        return this.id;
    }
    public void setId(long id) {
        this.id = id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    @Generated(hash = 79420138)
    public User(Long id, String username) {
        this.id = id;
        this.username = username;
    }
    @Generated(hash = 586692638)
    public User() {
    }


}

开始增删改查操作

  • 首先开始初始化数据库
        //创建一个数据库,名字为"wesker"
        DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(ApplicationContextHodler.getContext(), "wesker", null);
        //一个DaoMaster就代表着一个数据库的连接;
        DaoMaster mDaoMaster = new DaoMaster(devOpenHelper.getWritableDatabase());
        // DaoSession可以让我们使用一些Entity的基本操作和获取Dao操作类,
        // DaoSession可以创建多个,每一个都是属于同一个数据库连接的
        DaoSession mDaoSession = mDaoMaster.newSession();
        UserDao mUserDao = daoSession.getUserDao(); 
  • Insert
private void insert(){
        User mUser = new User(null,username);//如果id为null,那么数据库会为其分配自增长id
        mUserDao.insert(mUser);
        Toast.makeText(this, "成功插入", Toast.LENGTH_SHORT).show();
    }
  • Delete
private void delete(){
        User findUser = mUserDao.queryBuilder().where(UserDao.Properties.Username.eq("update_wesker")).build().unique();
        if(findUser != null){
            mUserDao.deleteByKey(findUser.getId());
        }
    }

-Update

private void update(){
        User findUser = mUserDao.queryBuilder().where(UserDao.Properties.Username.eq("insert_wesker")).build().unique();
        if(findUser != null) {
            findUser.setUsername("update_wesker");
            mUserDao.update(findUser);
            Toast.makeText(this, "修改成功", Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(this, "用户不存在", Toast.LENGTH_SHORT).show();
        }
    }

-Query

private void query(){
        List<User> userList = mUserDao.queryBuilder()
                .where(UserDao.Properties.Id.notEq(1))
                .limit(10)
                .build().list();
        StringBuilder s = new StringBuilder();
        for(User user:userList){
            s.append("userId:"+user.getId()+"username:"+user.getUsername());
            s.append('\n');
        }
        display.setText(s);
    }

-自定义查询

private void customSql(){
        Cursor cursor = mUserDao.getDatabase().rawQuery("select * from wesker", null);
        while (cursor.moveToNext()) {
            int chatCount = cursor.getInt(0);
            String username= cursor.getString(1);
        }
    }
GreenDao基本配置使用到这就结束啦,第一次写文章如有不足之处还望见谅并请提出,共勉。
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值