• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • 最新數據庫GreenDao

    首先我們需要在項目build.gradle中導入包`

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

    這里寫圖片描述

    接著在model中的build.gradle中導入包

    dependencies {
        compile 'org.greenrobot:greendao:3.2.0'
        compile 'org.greenrobot:greendao-generator:3.2.0'
    }

    接著在模塊build.gradle的頂部添加 
    apply plugin: ‘org.greenrobot.greendao’ 
    以及 
    注:這個建議不寫,如果不需要修改其代碼的話,一般不需要下面的配置

      greendao {
            schemaVersion 1
            daoPackage 'com.jian.greendao.gen'//這個是生成代碼保存的包名
            targetGenDir 'src/main/java'//保存到java代碼路徑
        }

    這里寫圖片描述

    同步后就可以使用greenDao。

    先來看看greenDao強大的自動生成代碼功能 
    創建實體類

    @Entity
    public class User {
        @Id(autoincrement = true)
        private Long id;
    
        private String name;
        private String sex;
        private int age;
        private int salary;
     }

    我們字需要編寫這些,大家應該看到,在最頂部有一個@Entity,這個標志告訴greenDao,這個是我需要生成的表。接著點擊 Build -> Make Project(快捷鍵ctrl+F9),將會自動為我們生成需要的類和代碼 
    生成的User類

    @Entity
    public class User {
        @Id(autoincrement = true)
        private Long id;
    
        private String name;
        private String sex;
        private int age;
        private int salary;
        @Generated(hash = 257789183)
        public User(Long id, String name, String sex, int age, int salary) {
            this.id = id;
            this.name = name;
            this.sex = sex;
            this.age = age;
            this.salary = salary;
        }
        @Generated(hash = 586692638)
        public User() {
        }
        public Long getId() {
            return this.id;
        }
        public void setId(Long id) {
            this.id = id;
        }
        public String getName() {
            return this.name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getSex() {
            return this.sex;
        }
        public void setSex(String sex) {
            this.sex = sex;
        }
        public int getAge() {
            return this.age;
        }
        public void setAge(int age) {
            this.age = age;
        }
        public int getSalary() {
            return this.salary;
        }
        public void setSalary(int salary) {
            this.salary = salary;
        }
    
    }

    生成的類 
    這里寫圖片描述

    創建App類,繼承Application

    public class App extends Application {
    
        public static final boolean ENCRYPTED = true;
    
        private DaoSession daoSession;
    
        @Override
        public void onCreate() {
            super.onCreate();
    
            DaoMaster.DevOpenHelper helper = new  DaoMaster.DevOpenHelper(this, ENCRYPTED ? "users-db-encrypted" : "users-db");
            Database db =  helper.getWritableDb();
            daoSession = new DaoMaster(db).newSession();
        }
        public DaoSession getDaoSession() {
            return daoSession;
        }
    }
    

    tip:別忘記在manifeste把它添加進去 
    這里寫圖片描述

    這個類起到防止重復創建數據庫的操作。當然也可以使用單例模式來實現。

    使用GreenDao進行增刪改查

    package com.example.jian.asked;
    
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.support.v7.widget.RecyclerView;
    
    import com.example.greendao.gen.DaoSession;
    import com.example.greendao.gen.UserDao;
    
    import org.greenrobot.greendao.query.Query;
    import org.greenrobot.greendao.query.QueryBuilder;
    
    import java.util.List;
    
    public class MainActivity extends AppCompatActivity {
        private Query<User> userQuery;
        private RecyclerView recyclerView;
        private MyAdapter myAdapter ;
    
        UserDao userDao;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
             setContentView(R.layout.activity_main);
             DaoSession daoSession =((App) getApplication()).getDaoSession();
             userDao = daoSession.getUserDao();
             userQuery = userDao.queryBuilder().orderAsc(UserDao.Properties.Id).build();
        }
    
        //插入數據
        private void insertUser(){
            User user = new User(null,"jianguotang", "男",18,2000);
            userDao.insert(user);
        }
        //刪除特定位置的數據
        private void deleteUser(){
    
            userDao.deleteByKey(5l);
        }
    
        /**
         * 對位置 為position的的數據進行修改
         * @param position
         */
        private void updateUser(Long position){
            //查詢id是1位置的數據
           User user = userDao.load(5l);
            //對其進行修改
            user.setName("簡國堂");
            userDao.update(user);
    
        }
        //查詢全部的數據
        private List<User> queryList(){
            List<User> users = userQuery.list();
            return users;
        }
    
        /**
         *  按照屬性name和sex來查詢user
         * @param name
         */
        private List<User> queryByName(String name,String sex){
            QueryBuilder<User> builder = userDao.queryBuilder();
            Query<User> query = builder
                    .where(UserDao.Properties.Name.eq(name),UserDao.Properties.Sex.eq(sex))
                    .build();
            List<User> list = query.list();
            return  list;
        }
    
    }
    

    GreenDao注解

    @Entity 用于標識這是一個需要Greendao幫我們生成代碼的bean
    
    @Id 標明主鍵,括號里可以指定是否自增
    
    @Property 用于設置屬性在數據庫中的列名(默認不寫就是保持一致)
    
    @NotNull 非空
    
    @Transient 標識這個字段是自定義的不會創建到數據庫表里
    
    @Unique 添加唯一約束
    
    
    greendao的模糊查詢方法。

    greendao模糊查詢提供了like函數,具體的使用方法如下:

    mqBuilder.where(****Dao.Properties.name.like("%" + **.getName() + "%"));

    版權聲明:本文為qq_41138470原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/qq_41138470/article/details/78718188

    智能推薦

    使用GreenDao數據庫的記錄

    1.List<T>自定義數據的增加方法: 寫一個convert轉化器,然后用FastJson的格式轉化方法來處理轉化問題 例如: 數據庫的一個自定義List,叫priceArray. 然后就進行轉化: FastJson的依賴包: 其他關于greendao的數據庫操作就很簡單了...

    Greendao操作數據庫

    1.配置 第一步 先在 項目的Project 的 buil.gradle 里 在buildscript- repositories添加配置mavenCentral(), 在dependencies 里添加 classpath’org.greenrobot:greendao-gradle-plugin:3.1.0 第二步 在自己想要用的 GreenDao Module 里的 depend...

    安卓數據庫 GreenDao的使用教程

    本文介紹安卓項目從0集成greenDao到使用增刪改查的方法; 就是這么簡潔精煉!!! 直接上步驟 一. 添加引用 1、app下的build.gradle 文件 ,在 dependencies{} 的最后 添加下面引用: (請根據SDK編譯版本選擇使用compile 還是 api 還是 implementation) 2、app下的build.gradle 文件 ,在第一行下面,添加下面一行代碼:...

    greendao3.0——數據庫到底該怎么升級

    前一篇講了greendao3.0的基本使用:http://blog.csdn.net/huangxiaoguo1/article/details/52916189 這一篇看看數據庫到底該怎么升級呢?看我升級后的效果 沒有升級前的頁面顯示 沒有升級前的數據庫 升級后的頁面顯示 升級后的數據庫 看增加了一個NUM字段 。 最新有小伙伴遇到數據庫升級問題了,說網上都是2.0版本的升級方法,自己使用的是3...

    GreenDao3.2.2數據庫升級方法

    第一步:創建一個類MyDaoHelper繼承DaoMaster.OpenHelper注意: 中的BuMenDao,PersonDao全是greendao自動生成的dao類 第二步:創建一個類MigrationHelper(網上找的,大神寫的) 第三步:修改build中的greendao版本號 第四步:將項目重新編譯就行了 注意:可能在讀取數據庫時,顯示沒有找到你添加的列,只要將APP卸載重新裝一次...

    猜你喜歡

    greenDAO 3.2 初探(數據庫處理開源框架)

    greenDAO 3.2  轉自:http://blog.csdn.net/zone_/article/details/69054997 *本篇文章已授權微信公眾號 guolin_blog (郭霖)獨家發布  greenDAO 在之前就有耳聞,但是沒空出時間去學習,今天突然看到了這個詞,于是乎就決定搞定它,啃一下英文文檔。那么故事就來了。  首先說說我所了解...

    神奇的Batch Normalization 如果一個模型僅訓練BN層會是什么樣的

    您可能會感到驚訝,但這是有效的。 ? 最近,我閱讀了arXiv平臺上的Jonathan Frankle,David J. Schwab和Ari S. Morcos撰寫的論文“Training BatchNorm and Only BatchNorm: On the Expressive Power of Random Features in CNNs”。 這個主意立刻引起了...

    用Python實現校園通知更新提醒

    前言 這個項目實已經在一個月前已經完成了,一直都想寫一篇博客來總結這個過程中遇到的一些問題。但最近一個月來都比較忙,所以一直拖到了現在。 首先說說起因吧,我沒事的時候,總喜歡依次點開學校主頁、教務處、圖書館以及學院的網站,看看有沒有什么新通知,雖然大多與我無關。恰逢最近正在學Python,經常聽到別人說用Python寫爬蟲很簡單,但自己尚未接觸過爬蟲。于是抱著試一試的心態看了幾篇關于Python爬...

    spring_ioc相關_第一章

    1 spring是一站式框架,在javaee的三層結構中,每一層都提供不提并的解決技術 web層:springMVC service層:spring的ioc dao層:spring的jdbcTemplate 2 javaee為避免兩個類之間出現耦合,則把對象的創建交給spring進行管理,spring的ioc操作:(1)ioc的配置文件方式;(2)ioc注解方式 3 ioc的底層原理使用技術(1)...

    【Python+OpenCV】視頻流局部區域像素值處理-一種特征提取方法

    參考我之前寫的處理圖片的文章:Python+OpenCV實現【圖片】局部區域像素值處理(改進版) 開發環境:Python3.6.0 + OpenCV3.2.0 任務目標:攝像頭采集圖像(例如:480*640),并對視頻流每一幀(灰度圖)特定矩形區域(480*30)像素值進行行求和,得到一個480*1的數組,用這480個數據繪制條形圖,即在逐幀采集視頻流并處理后“實時”顯示采...

    精品国产乱码久久久久久蜜桃不卡