• greenDao的使用


    首先在src/main目录下,再建一个目录,用来放自动生成的代码,比如叫java-gen,然后再建立一个Java工程:file---->new----->new module----->然后选择java library,建好之后,首先在app的build.gradle里面加

    compile 'org.greenrobot:greendao:3.1.0'
    compile 'org.greenrobot:greendao-generator:3.1.0'
    ,然后在Java工程里也添加(版本去官网的升级版本注意里找最新版本)
    compile 'org.greenrobot:greendao-generator:3.1.0'
    ,这是Java工程主类的代码:
     1 public class MyClass1 {
     2     public static void main(String[] args) throws Exception {
     3         // 正如你所见的,你创建了一个用于添加实体(Entity)的模式(Schema)对象。
     4         // 两个参数分别代表:数据库版本号与自动生成代码的包路径。,java库中的包
     5         Schema schema = new Schema(1, "com.yus.test8_17dbdemo");
     6 //      当然,如果你愿意,你也可以分别指定生成的 Bean 与 DAO 类所在的目录,只要如下所示:
     7 //      Schema schema = new Schema(1, "me.itangqi.bean");
     8 //      schema.setDefaultJavaPackageDao("me.itangqi.dao");
     9 
    10         // 模式(Schema)同时也拥有两个默认的 flags,分别用来标示 entity 是否是 activie 以及是否使用 keep sections。
    11         // schema2.enableActiveEntitiesByDefault();
    12         // schema2.enableKeepSectionsByDefault();
    13 
    14         // 一旦你拥有了一个 Schema 对象后,你便可以使用它添加实体(Entities)了。
    15         addNote(schema);
    16 
    17         // 最后我们将使用 DAOGenerator 类的 generateAll() 方法自动生成代码,此处你需要根据自己的情况更改输出目录(既之前创建的 java-gen)。
    18         // 其实,输出目录的路径可以在 build.gradle 中设置,有兴趣的朋友可以自行搜索,这里就不再详解。
          //表示自动生成的代码放在这里
    19 new DaoGenerator().generateAll(schema, "./app/src/main/java-gen"); 20 } 21 22 private static void addNote(Schema schema) { 23 // 一个实体(类)就关联到数据库中的一张表,此处表名为「Note」(既类名) 24 Entity note = schema.addEntity("Note"); 25 // 你也可以重新给表命名 26 // note.setTableName("NODE"); 27 28 // greenDAO 会自动根据实体类的属性值来创建表字段,并赋予默认值 29 // 接下来你便可以设置表中的字段: 30 note.addIdProperty(); 31 note.addStringProperty("text").notNull(); 32 // 与在 Java 中使用驼峰命名法不同,默认数据库中的命名是使用大写和下划线来分割单词的。 33 // For example, a property called “creationDate” will become a database column “CREATION_DATE”. 34 note.addStringProperty("comment"); 35 note.addDateProperty("date"); 36 } 37 }

    然后直接运行这个Java工程,会在java-gen目录下生成四个类,方便我们之后的使用。

    这是主类里建数据库和增删改查的方法:

    public class MainActivity extends AppCompatActivity {
        private SQLiteDatabase db;
        private DaoMaster daoMaster;
        private DaoSession daoSession;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            // 官方推荐将获取 DaoMaster 对象的方法放到 Application 层,这样将避免多次创建生成 Session 对象
            setupDatabase();
            // 插入操作,简单到只要你创建一个 Java 对象
            Note note = new Note(null, "text", "comment", new Date());
            getNoteDao().insert(note);
            //查询
            Query<Note> noteQuery = getNoteDao().queryBuilder()
                    .where(NoteDao.Properties.Text.eq("text"))
                    .orderAsc(NoteDao.Properties.Date)
                    .build();
            List<Note> list = noteQuery.list();
        }
    
        private void setupDatabase() {
    // 通过 DaoMaster 的内部类 DevOpenHelper,你可以得到一个便利的 SQLiteOpenHelper 对象。
            // 可能你已经注意到了,你并不需要去编写「CREATE TABLE」这样的 SQL 语句,因为 greenDAO 已经帮你做了。
            // 注意:默认的 DaoMaster.DevOpenHelper 会在数据库升级时,删除所有的表,意味着这将导致数据的丢失。
            // 所以,在正式的项目中,你还应该做一层封装,来实现数据库的安全升级。
            //建立数据库,指定名字
            DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, "people-db", null);
            db = helper.getWritableDatabase();
            // 注意:该数据库连接属于 DaoMaster,所以多个 Session 指的是相同的数据库连接。
            daoMaster = new DaoMaster(db);
            daoSession = daoMaster.newSession();
        }
        private NoteDao getNoteDao() {
            return daoSession.getNoteDao();
        }
    }

    这样,就可以自由地使用了,配置有一点点麻烦。

    这里是我的GitHub地址,里面有我自己做的一些有用的Demo,适合新手学习,欢迎大家star我的项目 https://github.com/gnehsuy

  • 相关阅读:
    JavaScript underscore
    JavaScript jQuery 事件、动画、扩展
    JavaScript jQuery 入门回顾
    JavaScript H5 Canvas
    JavaScript Ajax + Promise
    JavaScript 浏览器对象
    JavaScript 面向对象编程
    JavaScript 标准对象
    JavaScript 高阶函数 + generator生成器
    “耐撕”团队2016.04.12站立会议
  • 原文地址:https://www.cnblogs.com/android-yus/p/5784573.html
Copyright © 2020-2023  润新知