从使用到源码—GreenDao(基本使用篇)

2018-10-02  本文已影响0人  horseLai

引言

准备工作

buildscript {
    repositories {
        jcenter()
        mavenCentral() // add repository
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.1'
        classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2'  
    }
}
apply plugin: 'com.android.application'
apply plugin: 'org.greenrobot.greendao' // apply plugin

dependencies {
implementation 'org.greenrobot:greendao:3.2.2'  
    // 需要加密数据库的话添加这个
    implementation 'net.zetetic:android-database-sqlcipher:3.5.6'
}
@Entity
public class User
{
   @Id(autoincrement = true) 
    private Long id;
    @Unique 
    private Long userIncrId; 
    @NotNull
    private String userAccount;
    private String userName;
    private Long orgId;
    private String orgName;
    // ...
}

@Entity
public class ChatObject
{
    @Id(autoincrement = true) 
    private Long id;
    private String userIcrId;
   
    // 一对一关联
    @ToOne(joinProperty = "userIncrId")
    private User user;
} 

增删改查(基本操作)


关系型数据库

关系型数据库几乎覆盖了我们大部分实际使用场景,比如说实时通讯场景、商城等等。这里我们以一个博客系统数据库模型为例,熟悉一下如何使用greenDao建立这些场景模型。

@Test
public void multiRelative() {

    UserDao userDao = App.getDaoSession().getUserDao();
    BlogDao blogDao = App.getDaoSession().getBlogDao();
    CommentDao commentDao = App.getDaoSession().getCommentDao();
    CommentReplyDao commentReplyDao = App.getDaoSession().getCommentReplyDao();
    
    // 1. 发布一篇博客
    // 发布者
    User publisher = new User();
    publisher.setAge(24)
            .setGender("男")
            .setFirstName("horseLai")
            .setLastName("horseLai")
            .setPhoneNum("22132323323");
    userDao.insertOrReplace(publisher);

    // 博客
    Blog blog = new Blog();
    blog.setTitle("GreenDao建立关系型数据库模型");
    blog.setContent("xxxxxxxxx");
    blog.setCreateTime(Calendar.getInstance().getTime());

    blog.setUser(publisher);  // 关联至发布者
    blogDao.insertOrReplace(blog);

    // 2. 添加一条评论
    // 评论者
    User commentUser = new User()
            .setPhoneNum("1234555")
            .setAge(24)
            .setFirstName("horseLai");
    userDao.insertOrReplace(commentUser);
    // 评论
    Comment comment = new Comment();
    comment.setTitle("评论");
    comment.setContent("评论内容");
    comment.setUser(commentUser);  // 关联评论者
    comment.setCreateTime(Calendar.getInstance().getTime());
    commentDao.insertOrReplace(comment);
    
 
    // 3. 新增一条评论的回复评论
    User commentReplyUser = new User()
            .setPhoneNum("12345568875")
            .setAge(23)
            .setFirstName("horseLai");
    userDao.insertOrReplace(commentReplyUser);
    // 回复的评论
    CommentReply commentReply = new CommentReply();
    commentReply.setTitle("回复评论");
    commentReply.setContent("评论回复内容");
    commentReply.setUser(commentReplyUser);
    commentReply.setCreateTime(Calendar.getInstance().getTime());
    commentReplyDao.insertOrReplace(commentReply);
      
}

上一篇 下一篇

猜你喜欢

热点阅读