Android ORM 框架之 greenDAO 学习

来源:互联网 发布:奥迪大众什么关系 知乎 编辑:程序博客网 时间:2024/05/16 10:58

1. src-main 同级目录下建立java-gen 文件夹

2.app  gradle中添加

compile 'de.greenrobot:greendao-generator:1.3.1'
3.建立java library Module 模块
java library Module 模块 gradale
apply plugin: 'java'dependencies {    compile fileTree(dir: 'libs', include: ['*.jar'])    compile 'de.greenrobot:greendao-generator:1.3.1'}sourceCompatibility = "1.7"targetCompatibility = "1.7"
4. run 此java 项目
package com.example;import de.greenrobot.daogenerator.DaoGenerator;import de.greenrobot.daogenerator.Entity;import de.greenrobot.daogenerator.Schema;public class ExampleDaoGenerator {    public static void main(String[] args) throws Exception {        // 正如你所见的,你创建了一个用于添加实体(Entity)的模式(Schema)对象。        // 两个参数分别代表:数据库版本号与自动生成代码的包路径。        Schema schema = new Schema(1, "me.itangqi.greendao");//      当然,如果你愿意,你也可以分别指定生成的 Bean 与 DAO 类所在的目录,只要如下所示://      Schema schema = new Schema(1, "me.itangqi.bean");//      schema.setDefaultJavaPackageDao("me.itangqi.dao");        // 模式(Schema)同时也拥有两个默认的 flags,分别用来标示 entity 是否是 activie 以及是否使用 keep sections。        // schema2.enableActiveEntitiesByDefault();        // schema2.enableKeepSectionsByDefault();        // 一旦你拥有了一个 Schema 对象后,你便可以使用它添加实体(Entities)了。        addNote(schema);        // 最后我们将使用 DAOGenerator 类的 generateAll() 方法自动生成代码,此处你需要根据自己的情况更改输出目录(既之前创建的 java-gen)。        // 其实,输出目录的路径可以在 build.gradle 中设置,有兴趣的朋友可以自行搜索,这里就不再详解。        new DaoGenerator().generateAll(schema, "/BmobDemo/app/src/main/java-gen");    }    /**     * @param schema     */    private static void addNote(Schema schema) {        // 一个实体(类)就关联到数据库中的一张表,此处表名为「Note」(既类名)        Entity note = schema.addEntity("Note");        // 你也可以重新给表命名        // note.setTableName("NODE");        // greenDAO 会自动根据实体类的属性值来创建表字段,并赋予默认值        // 接下来你便可以设置表中的字段:        note.addIdProperty();        note.addStringProperty("text").notNull();        // 与在 Java 中使用驼峰命名法不同,默认数据库中的命名是使用大写和下划线来分割单词的。        // For example, a property called “creationDate” will become a database column “CREATION_DATE”.        note.addStringProperty("comment");        note.addDateProperty("date");    }}
5 android 项目中使用
compile 'de.greenrobot:greendao-generator:1.3.1'
6.界面使用 增删改查
package org.zzgsc.com.bmobdemo;import android.database.sqlite.SQLiteDatabase;import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.Toast;import java.util.Date;import java.util.List;import de.greenrobot.dao.query.Query;import me.itangqi.greendao.DaoMaster;import me.itangqi.greendao.DaoSession;import me.itangqi.greendao.Note;import me.itangqi.greendao.NoteDao;/** * Created by Administrator on 2016/10/14. */public class DbTest extends AppCompatActivity {    private DaoMaster daoMaster;    private DaoSession daoSession;    @Override    protected void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.db);        initdb();    }    /**     * 添加数据     */    public void add(View view) {        Note note = new Note(null, "gsc", "Learn orm 框架", new Date());        daoSession.getNoteDao().insert(note);        Toast.makeText(getApplicationContext(), "insert Ok!", 1).show();    }    /**     * @param view 查询数据     */    public void select(View view) {        //条件查询        //   Query<Note> gsc = daoSession.getNoteDao().queryBuilder().where(NoteDao.Properties.Text.eq("gsc")).build();        Query<Note> build = daoSession.getNoteDao().queryBuilder().build();        List<Note> list = build.list();        for (Note N : list) {            String comment = N.getComment();            Date date = N.getDate();            String text = N.getText();            System.out.println("------------" + N.getId());        }    }    public void Del(View view) {        //删除所有        // daoSession.getNoteDao().deleteAll();        //根据key 主键删除        daoSession.getNoteDao().deleteByKey(10L);        System.out.println("删除成功!");    }    public void update(View view) {//修改以前要查询        Query<Note> gsc = daoSession.getNoteDao().queryBuilder().where(NoteDao.Properties.Text.eq("gsc")).build();        List<Note> list = gsc.list();        for (Note n : list) {            n.setText("fdy");            daoSession.getNoteDao().update(n);            Toast.makeText(this, "修改成功!!", Toast.LENGTH_SHORT).show();        }    }    /**     * 初始化数据库     */    private void initdb() {        String dbName = "stu";//数据库名字        DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, dbName, null);        SQLiteDatabase db = helper.getWritableDatabase();//获取数据库对象        daoMaster = new DaoMaster(db);//获取数据库的管理者        daoSession = daoMaster.newSession();    }}
学习参考了这篇文章 http://www.open-open.com/lib/view/open1438065400878.html

0 0
原创粉丝点击