Android 接入GreenDao,实现本地缓存

环境
Android studio 3.2 + GreenDao 3.2.2
1.在project中的gradle添加

buildscript {
    
    repositories {
        ...
        mavenCentral() // add repository
    }
    dependencies {
        ...
        classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2'
    }
}

2.在moudle的gradle中添加

apply plugin: 'com.android.application'
apply plugin: 'org.greenrobot.greendao' // apply plugin

android {
    ...
}

dependencies {
    ...
    implementation 'org.greenrobot:greendao:3.2.2'
}

3.在moudle的gradle中配置GreenDao基本参数

android {
    ...
}

greendao {
    schemaVersion 1  //当前数据库版本
    daoPackage 'com.ydm.opengl.db.entity'  //生成的Dao DaoMaster和DaoSession的包名称(源实体类的包名类)
    targetGenDir 'src/main/java'  //生成源应存储的位置。默认为构建目录(build\generated\source\greenDao)
}

dependencies {
   ...
}

4、配置完成后开始使用
4.1、创建一张学生表

@Entity
public class StudentInfoData {
    @Id(autoincrement = true)  //id设置为自增长
    private Long studentId;  //学院id
    
    @Index(unique = true)   //唯一性
    private String studentNumber;  //学号

    private String studentName;  //姓名

    private String studentSex;  //性别

    private String studentScore;  //成绩
}

4.2、点击Build–>Make Project 自动生成文件
ps:由于之前配置已经在build文件中配置了生成源应存储的位置

daoPackage 'com.ydm.opengl.db.entity'  //生成的Dao DaoMaster和DaoSession的包名称(源实体类的包名类)
targetGenDir 'src/main/java'  //生成源应存储的位置。默认为构建目录

所以当Make Project完成后,会在之前配置好的路径下自动生成DaoMaster、DaoSession、StudentInfoDataDao三个文件以及自动生成set.get方法
在这里插入图片描述

@Entity
public class StudentInfoData {
    @Id(autoincrement = true)  //id设置为自增长
    private Long studentId;  //学院id

    @Index(unique = true)   //唯一性
    private String studentNumber;  //学号

    private String studentName;  //姓名

    private String studentSex;  //性别

    private String studentScore;  //成绩

    @Generated(hash = 112611198)
    public StudentInfoData(Long studentId, String studentNumber, String studentName,
            String studentSex, String studentScore) {
        this.studentId = studentId;
        this.studentNumber = studentNumber;
        this.studentName = studentName;
        this.studentSex = studentSex;
        this.studentScore = studentScore;
    }

    @Generated(hash = 1698171545)
    public StudentInfoData() {
    }

    public Long getStudentId() {
        return this.studentId;
    }

    public void setStudentId(Long studentId) {
        this.studentId = studentId;
    }

    public String getStudentNumber() {
        return this.studentNumber;
    }

    public void setStudentNumber(String studentNumber) {
        this.studentNumber = studentNumber;
    }

    public String getStudentName() {
        return this.studentName;
    }

    public void setStudentName(String studentName) {
        this.studentName = studentName;
    }

    public String getStudentSex() {
        return this.studentSex;
    }

    public void setStudentSex(String studentSex) {
        this.studentSex = studentSex;
    }

    public String getStudentScore() {
        return this.studentScore;
    }

    public void setStudentScore(String studentScore) {
        this.studentScore = studentScore;
    }
}

4.3、获取Dao,及具体的操作
初始化+录入数据

private void getStudentDao(){
        DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(this,"student.db");
        daoMaster = new DaoMaster(devOpenHelper.getWritableDatabase());
        daoSession = daoMaster.newSession();
        studentInfoDataDao = daoSession.getStudentInfoDataDao();
    }

tvInputInfo.setOnClickListener(v -> {
            try {
                StudentInfoData studentInfoData = new StudentInfoData(null, etStuNum.getText().toString(),
                        etName.getText().toString(), etSex.getText().toString(), etScore.getText().toString());
                long end = studentInfoDataDao.insert(studentInfoData);
                if (end > 0){
                    Toast.makeText(this, "录入成功", Toast.LENGTH_SHORT).show();
                } else {
                    Toast.makeText(this, "录入失败", Toast.LENGTH_SHORT).show();
                }

            } catch (Exception e){
                e.printStackTrace();
                Toast.makeText(this, "学号是唯一的", Toast.LENGTH_SHORT).show();
            }
        });

今天就写到这了相关代码

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DerMing_You

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值