• <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

    智能推薦

    知識點最全的數據庫面試題

    來源:https://zhuanlan.zhihu.com/p/150959652 13道sql,基本上覆蓋了所有sql的核心點。 要求寫出一下SQL語句 1、查詢位于“華東”或“華南”地區的供應商的ID、公司名稱、地區、城市和電話字段的值 a. 地區=”華東” OR a.地區=”華南”; 2、查詢&l...

    面向切面編程(AOP)知識總結

    目錄 1.存在問題 2.AOP的概念 3.AOP應用范圍 3.AOP實現方式 4.應用舉例 5.結束語 本文在學習【老張的哲學】系列文章AOP相關章節后,自己歸納總結的筆記。 1.存在問題 最近,其它項目小組在開發的過程中遇到了一個問題,在日志記錄時,用戶明明點擊的是更新操作,可翻看記錄時卻發現是查詢操作,起初是一頭霧水,后面跟蹤該更新操作的代碼后才發現,在日志記錄時確實是寫著查詢,說到這里,大家...

    集合中出現的問題

    1.Java集合框架的長處? 2.集合框架中的泛型有什么長處? 3.Java集合框架的基礎接口有哪些? 4.為何Map接口不繼承Collection接口? 5.Iterater和ListIterator之間有什么差別? 6.fail-fast與fail-safe有什么差別? 7.在迭代一個集合的時候,怎樣避免ConcurrentModificationException?8.在Java中,Hash...

    三元運算符引起的bug

    三元運算符引起的bug 前言 延伸 總結 前言 今天測試提交了一個bug,跟蹤發現了一段代碼,初看還沒什么問題,簡易后的代碼: 這段代碼想要實現的功能是返回 細看發現后面使用的是三元運算符,這就是造成這個bug的元兇。 解決方案:使用括號括起來。 延伸 在做這個例子的時候,使用ideal,習慣性的使用sonar掃描: 這里很明顯的提醒這里表達式有問題。 總結 三元運算符格式:expression1...

    猜你喜歡

    利用dom4j來生成xml

    xml比較常用,處理xml的方式也比較多。現在就聊聊如何用dom4j來生成xml吧 先看看效果。。。 上傳代碼: 大概說下主要步驟吧:   1.創建document對象,創建root根節點,然后通過根節點繼續生成節點。其中也可以給該節點添加屬性,復制等。   2.創建輸出流,將該對象輸出到xml文件中去。需要設置好路徑和文件名等。...

    Android輪播圖原理思路分析+實現方案

    來自:http://blog.csdn.net/wubihang/article/details/52512597 ListView的headerView設置為輪播圖之后結合上/下拉刷新/加載的模式成為現在大多數APP的一個必須具備的功能,對于許多初學者來說想要實現輪播圖這樣一個集線程睡眠、自動處理、替換過程中刷新UI界面的組合功能非常困難,沒有思路,感覺無從下手,去搜索各種實現方案,發現目前充斥...

    Lambda的編寫和使用---java8編程實戰

    目錄 1.使用匿名類來表示不同的行為來實現行為參數,代碼有點啰嗦,解決這個問題的新工具--Lambda表達式。 2.Lambda的概念 3.Lambda語法測試  4.在程序中如何使用Lambda表達式 1.使用匿名類來表示不同的行為來實現行為參數,代碼有點啰嗦,解決這個問題的新工具--Lambda表達式。       Lambda可以讓你很簡潔地表示一個行...

    Electron學習筆記[1]

    什么是Electron Electron(最初名為Atom Shell[3])是GitHub開發的一個開源框架。它允許使用Node.js(作為后端)和Chromium(作為前端)完成桌面GUI應用程序的開發。 Electron 可以讓你使用純 JavaScript 調用豐富的原生 APIs 來創造桌面應用。你可以把它看作一個專注于桌面應用的 Node.js 的變體,而不是 Web 服務器。 很多很...

    SpingCloud踩坑記(二)SpringCloud配置中心

    springCloud配置中心 官網介紹如下 簡單來說:springCloud config項目,用來為分布式的微服務系統中提供集成式外部配置支持,分為客戶端和服務端。并且通過配置服務中心集中配置不同環境的變量,方便管理和配置遷移。 大致流程如下 涉及到三個角色: 配置中心服務端:為配置客戶端提供對應的配置信息,配置信息的來源是配置倉庫。應用啟動時,會從配置倉庫拉取配置信息緩存到本地倉庫中。 配置...

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