GreenDao3.0配置使用

作者: 曾经2020 | 来源:发表于2017-01-03 10:37 被阅读0次

    关于GreenDao

    greenDao是一个将对象映射到SQLite数据库,属于关系型数据库,。相对于android SQlite更好用简单易用,性能强大,如果不会数据库都不好意思说安卓开发了。

    SQLite

    public class SQLKeyWord  extends  SQLiteOpenHelper {
    /**
    *数据库名称
    */
    public staticStringSQLNAME="keyword.db";
    /**
    *表名
    */
    public staticStringTABLENAME="search_table";
    /**
    *字段
    */
    public staticStringSEARCH_KEYWORD="keyword";
    public staticStringSEARCH_ID="search_id";
    publicSQLKeyWord(Context context) {
    super(context,SQLNAME, null,1);
    }
    @Override
    public voidonCreate(SQLiteDatabase db) {
    //创建表
    String sql ="create table "+TABLENAME+"(_id integer primary key, "+SEARCH_KEYWORD+" varchar(10) not null,"+SEARCH_ID+" VARCHAR)";
    //执行SQL语句
    db.execSQL(sql);
    }
    /**
    *添加对象
    */
    public voidinsert(KeyWordBean bean) {
    //得到SQLiteDatabase对象
    SQLiteDatabase writableDatabase = getWritableDatabase();
    //实例化内容对象
    ContentValues values =newContentValues();
    //写入数据(键:字段;值)
    values.put(SEARCH_KEYWORD,bean.getKeyword());
    values.put(SEARCH_ID,bean.getSearch_id());
    //通过sql对象插入数据(表名,null,内容对象)
    writableDatabase.insert(TABLENAME, null,values);
    //关闭数据库对象
    writableDatabase.close();
    }
    /**
    *删除数据
    */
    public voiddelete() {
    //得到SQLitemDatabase对象
    SQLiteDatabase writableDatabase = getWritableDatabase();
    //通过sql对象删除数据(表名,删除的条件,删除的条件值)
    //        writableDatabase.delete(TABLENAME, NAME + "=?", new String[]{"zhangsan"});
    writableDatabase.delete(TABLENAME, null, null);//删除整表
    //关闭数据库
    writableDatabase.close();
    }
    /**
    *查询
    *
    *@return
    */
    publicListquery() {
    List list =newArrayList<>();
    List list2 =newArrayList<>();
    //得到SQLitemDatabase对象
    SQLiteDatabase sql = getReadableDatabase();
    //得到游标对象(表名,查询的列明,查询的条件,查询的条件值,分组,分组的条件,排序)
    Cursor cursor = sql.query(TABLENAME, null, null, null, null, null, null);
    while(cursor.moveToNext()) {
    KeyWordBean keyWordBean =newKeyWordBean();
    //得到数据
    String search_keyword = cursor.getString(cursor.getColumnIndex(SEARCH_KEYWORD));
    String search_id = cursor.getString(cursor.getColumnIndex(SEARCH_ID));
    keyWordBean.setSearch_id(search_id);
    keyWordBean.setKeyword(search_keyword);
    if(!CommonUntil.isEmpty(search_keyword)) {
    list.add(keyWordBean);
    }
    }
    HashSet h =newHashSet(list);
    list2.addAll(h);
    returnlist2;
    }
    @Override
    public voidonUpgrade(SQLiteDatabase db, intoldVersion, intnewVersion) {
    }
    }
    

    GreenDao

    1,在app gradle dependencies添加

    compile'org.greenrobot:greendao:3.0.1'
    compile'org.greenrobot:greendao-generator:3.0.0'
    

    在gradle头部添加applyplugin:'org.greenrobot.greendao'//添加

    2,在project gradle dependencies中进行配置

    dependencies {
    classpath'org.greenrobot:greendao-gradle-plugin:3.0.0'
    }
    

    3.app gradle 增加路径

    greendao {
    schemaVersion1//数据库版本号
    daoPackage'zy.app.org.myapplication.dao'//生成的dao路径
    targetGenDir'src/main/java'//数据库文件的目录
    }```
    ##4.新建数据库实体类
    使用@Entity关键字
    

    import org.greenrobot.greendao.annotation.Entity;
    import org.greenrobot.greendao.annotation.Id;
    import org.greenrobot.greendao.annotation.Property;
    import org.greenrobot.greendao.annotation.Generated;
    @Entity
    public classUserInfo {
    @Id
    privateLong id;
    @Property(nameInDb="USERNAME")
    private String username;
    @Property(nameInDb="NICKNAME")
    private String nickname;
    }

    ##5,MakeProject 
    as菜单栏的build->make project 实体类自动生成set get方法
    
    ![](https://img.haomeiwen.com/i2203203/5a3108c278856c45.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
    #Greendao使用
    ####Application类
    

    public class MyApp extends Application {
    private DaoMaster.DevOpenHelper mHelper;
    private SQLiteDatabase db;
    private DaoMaster mDaoMaster;
    private DaoSession mDaoSession;
    public static MyApp instances;
    @Override
    public void onCreate() {
    super.onCreate();
    instances=this;
    setDatabase();
    }
    public static MyApp getInstances() {
    returninstances;
    }
    private void set Database() {
    //通过DaoMaster的内部类DevOpenHelper,你可以得到一个便利的SQLiteOpenHelper对象。
    //可能你已经注意到了,你并不需要去编写「CREATE TABLE」这样的SQL语句,因为greenDAO已经帮你做了。
    //注意:默认的DaoMaster.DevOpenHelper会在数据库升级时,删除所有的表,意味着这将导致数据的丢失。
    //所以,在正式的项目中,你还应该做一层封装,来实现数据库的安全升级。
    mHelper=newDaoMaster.DevOpenHelper(this,"demo_db", null);
    db=mHelper.getWritableDatabase();
    //注意:该数据库连接属于DaoMaster,所以多个Session指的是相同的数据库连接。
    mDaoMaster=newDaoMaster(db);
    mDaoSession=mDaoMaster.newSession();
    }
    publicDaoSessiongetDaoSession() {
    returnmDaoSession;
    }
    publicSQLiteDatabasegetDb() {
    returndb;
    }
    }```

    Dao对象获取

    mUserDao = MyApplication.getInstances().getDaoSession().getUserDao();
    简单的增删改查实现:

    1. 增

    mUser =newUser((long)2,"anye3");mUserDao.insert(mUser);//添加一个```
    ####2. 删
    

    mUserDao.deleteByKey(id);```

    3. 改

    mUser =newUser((long)2,"anye0803");mUserDao.update(mUser);```
    ####4. 查
    

    List users = mUserDao.loadAll();
    String userName ="";
    for(inti =0; i < users.size(); i++) {
    userName += users.get(i).getName()+",";
    }
    mContext.setText("查询全部数据==>"+userName);```

    相关文章

      网友评论

        本文标题:GreenDao3.0配置使用

        本文链接:https://www.haomeiwen.com/subject/lmigvttx.html