GreenDao简单的增删改查+注解,ButterKnife

GreenDAO 优势

1、一个精简的库
2、性能最大化
3、内存开销最小化
4、易于使用的 APIs
5、对 Android 进行高度优化
在这里插入图片描述
1.首先先配置

1):在根build.gradle里添加:classpath ‘org.greenrobot:greendao-gradle-plugin:3.2.0’

2):在项目的build.gradle里:

-----①apply plugin: ‘org.greenrobot.greendao’
在这里插入图片描述
-----②在android{}里添加:

greendao {
schemaVersion 1//数据库版本号
daoPackage ‘com.example.zhujie.mydao’//设置DaoMaster、DaoSession、Dao包名
targetGenDir ‘src/main/java’//设置DaoMaster、DaoSession、Dao目录
//targetGenDirTest:设置生成单元测试目录
//generateTests:设置自动生成单元测试用例
}
在这里插入图片描述
-----③在dependencies{}里添加:(导入依赖)

implementation ‘org.greenrobot:greendao:3.2.2’
在这里插入图片描述

2.新建一个实体类
①通过@Entity
②id只能是Long类型, 通过Id(autoincrement = true) // 主键自增
在这里插入图片描述
③通过锤子自动生成一些内容

④toString

3.通过锤子(Build------>Make Project)

1):基本类里 自动生成: 图片内容+setter and getter
在这里插入图片描述
2):①DaoMaster,②DaoSession,③StudentDao
在这里插入图片描述

4.新建一个类继承Application

public class MyApp extends Application {

private static DaoSession daoSession;

@Override
public void onCreate() {
    super.onCreate();
    initGreenDao();
}

private void initGreenDao() {
    //创建DevOpenHelper类
    DaoMaster.DevOpenHelper openHelper=new DaoMaster.DevOpenHelper(this,"fxr.db");
    //开启一个可写数据库类
    SQLiteDatabase writableDatabase = openHelper.getWritableDatabase();
    //通过DaoMaster封装
    DaoMaster master=new DaoMaster(writableDatabase);
    daoSession = master.newSession();
}
public static DaoSession getDaoSession(){
    return daoSession;
}

}
*注意:写完要在清单文件中注册

5.在MainActivity里

public class MainActivity extends AppCompatActivity {

@BindView(R.id.Insert)
Button Insert;
@BindView(R.id.Delete)
Button Delete;
@BindView(R.id.Update)
Button Update;
@BindView(R.id.Select)
Button Select;
@BindView(R.id.get_Content)
TextView getContent;
private StudentDao studentDao;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ButterKnife.bind(this);

    studentDao = MyApp.getDaoSession().getStudentDao();
}

@OnClick({R.id.Insert, R.id.Delete, R.id.Update, R.id.Select})
public void onViewClicked(View view) {
    switch (view.getId()) {
        case R.id.Insert:
            setInsert();
            break;
        case R.id.Delete:
            setDelete();
            break;
        case R.id.Update:
            setUpdate();
            break;
        case R.id.Select:
            setSelect();
            break;
    }
}

//增加数据
private void setInsert() {
    Student student = new Student("迪丽热巴", "美炸了", 18);
    long insert = studentDao.insert(student);
    if (insert > 0) {
        Toast.makeText(this, "插入成功", Toast.LENGTH_SHORT).show();
    }
}

//删除数据 删除必须要删除数据库里面存在的数据
private void setDelete() {
    studentDao.deleteByKey(1l);
    Toast.makeText(this, "删除成功", Toast.LENGTH_SHORT).show();
}

//修改数据
private void setUpdate() {
    //修改必须要改数据库里面存在的数据
    Student student = studentDao.load(1l);
    student.setAge(3);
    student.setName("fff");
    student.setSex("女");
    studentDao.update(student);
}

//查询数据
private void setSelect() {
    //查询所有数据
    getContent.setText("");
    List<Student> students = studentDao.loadAll();
    getContent.setText(students.toString());
}

}
*
*
图示注解的内容通过以下操作实现:(ButterKnife

a:下载插件:File---->Settings---->Plugins----->搜索zelezny 下载
b:导两个依赖:----implementation ‘com.jakewharton:butterknife:8.8.1’
------------------------annotationProcessor ‘com.jakewharton:butterknife-compiler:8.8.1’
c:Alt+Insert 选最后一个
*
*

在这里插入图片描述

Greendao中的注解

1.实体@Entity注解

① schema:告知GreenDao当前实体属于哪个schema
② active:标记一个实体处于活跃状态,活动实体有更新、删除和刷新方法
③ nameInDb:在数据库中使用的别名,默认使用的是实体的类名
④ indexes:定义索引,可以跨越多个列
⑤ createInDb:标记创建数据库表

2.基础属性注解

① @Id:主键 Long 型,可以通过@Id(autoincrement = true)设置自增长
② @Property:设置一个非默认关系映射所对应的列名,默认是使用字段名,例如:@Property(nameInDb = “name”)
③ @NotNull:设置数据库表当前列不能为空
④ @Transient:添加此标记后不会生成数据库表的列

3.索引注解

① @Index:使用@Index作为一个属性来创建一个索引,通过name设置索引别名,也可以通过unique给索引添加约束
② @Unique:向数据库添加了一个唯一的约束

4.关系注解

① @ToOne:定义与另一个实体(一个实体对象)的关系
② @ToMany:定义与多个实体对象的关系

猜你喜欢

转载自blog.csdn.net/qq_43603312/article/details/85267979