Android GreenDao使用(二)増删改查

5652 ワード

前の記事ではgreendaoの基本的な使用について書きました.統合、テーブルの作成、操作オブジェクトのカプセル化などが含まれています.
この紹介では、基本的な変更操作を追加します.
まず、新しいアシスタントクラスを作成して、操作をすべて管理します.
/**
 *             ,ORM      
 * Created by ge on 2017/4/6.
 */

public class DataBaseHelper {

    private DaoManager daoManager;

    public DataBaseHelper(Context context) {
        daoManager = DaoManager.getInstance();
        daoManager.init(context);
    }

}

すべてのテーブルに対する操作は、このクラスで完了します.
前の記事では、自己成長Id、intタイプのグループ、Stringタイプの名前を含むテーブルTestGroupを作成しました.
次に、これらのプロパティとこのテーブルについていくつかの操作を行います.
Greendaoは、DaoMaster、DaoSession、TestGroup Dao以外のエンティティクラスTestGroupを生成します.
package com.school.entity;

import org.greenrobot.greendao.annotation.*;

import java.io.Serializable;

// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. Enable "keep" sections if you want to edit.

/**
 * Entity mapped to table "TEST_GROUP".
 */
@Entity
public class TestGroup implements Serializable {

    @Id
    private Long id;
    private Integer group;
    private String name;

    @Generated
    public TestGroup() {
    }

    public TestGroup(Long id) {
        this.id = id;
    }

    @Generated
    public TestGroup(Long id, Integer group, String name) {
        this.id = id;
        this.group = group;
        this.name = name;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Integer getGroup() {
        return group;
    }

    public void setGroup(Integer group) {
        this.group = group;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}

注意:1.以下、中旗は操作が成功したかどうかを判断するためであり、以下同様である.
次の操作方法は、DataBaseHelperにあります.
3.使用(activityやfragmentなどのアクティブなインタフェース):
インスタンス化されたデータベース・オブジェクトは、このメソッドを直接呼び出して対応するパラメータに入力します.
1.データを挿入します.
/**
     *             
     */
    public boolean insertStudent(TestGroup testGroup){
        boolean flag = false;

        flag = daoManager.getDaoSession().insert(testGroup)!= -1;

        return flag;
    }

2.複数のデータを挿入:
/**
     *               
     */
    public boolean insertListGroup(final List  list){

        boolean flag = false;

        try{
            daoManager.getDaoSession().runInTx(new Runnable() {
                @Override
                public void run() {
                    for(TestGroup school:list){
                        daoManager.getDaoSession().insertOrReplace(school);
                    }
                }
            });
            flag = true;
        } catch(Exception e){
            e.printStackTrace();
        }

        return flag;
    }

3.あるデータの修正
/**
     *           
     */
    public boolean updateTestGroup(TestGroup testGroup){
        boolean flag = false;

        try{
            daoManager.getDaoSession().update(testGroup);
            flag = true;
        } catch(Exception e){
            e.printStackTrace();
        }
        return flag;
    }

4.削除操作
 /**
     *   
     */
    public boolean deleteTestGroup(TestGroup testGroup){

        boolean flag = false;

        try{
            //    
            daoManager.getDaoSession().delete(testGroup);
            //     
// daoManager.getDaoSession().deleteAll();
            flag = true;
        } catch(Exception e){
            e.printStackTrace();
        }
        return flag;
    }

注意:すべてのメソッドを削除し、パラメータtestGroupのクラスタイプを入力します.
5.すべてを問い合わせる
/**
     *     
     */
    public List  queryListAll(){
        return daoManager.getDaoSession().loadAll(TestGroup.class);
    }

6.一意のIDに基づいてデータをクエリーします.ここではプライマリ・キーに基づいています.
/**
     *       
     *  :    
     */
    public TestGroup queryListOne(long key){
        return daoManager.getDaoSession().load(TestGroup.class, key);
    }

実際のプロジェクトにはさまざまなニーズがあり、簡単なクエリーではビジネスニーズを満たすことができない可能性があります.この場合、2つの選択肢があります.
1)queryRawを使用すると,中間パラメータは直接sq文を書くことができる.sqに詳しい方はご利用ください.
2)QueryBuilderオブジェクトを使用してクエリー条件を設定します.この方法は比較的簡単で直感的で,sqをあまり深く理解する必要はない.
2つ目:
 /**
     *     ID
     */
    public void queryById(){
        //     
        QueryBuilder  builder = daoManager.getDaoSession().queryBuilder(TestGroup.class);
        builder.where(TestGroupDao.Properties.Id.eq(1)).list();
    }

greendaoは使いやすく、パフォーマンスもこれらのorm三方ライブラリの中で非常に優れています.
コード量が減少し、sqに慣れていない子供靴たちはそれを使って移行することができます.
最後にsqをたくさん見ることをお勧めします(ははは).
注意:1)QueryBuilderオブジェクトを構築します.
2)whereにはWhereOrもあり、パラメータは多くのクエリー条件を追加することができ、whereは並列であり、whereOrはまたはである.
3)properties.id後に各種クエリー条件を設定できるので、簡単で分かりやすいです
いくつかのクエリ条件キーワード:
「whereOr」where文に書かれている条件はすべて「かつ」で接続され、whereOrの文は「または」で接続されています.
「distinct」は、重荷フィールドを直接フィルタします.
「limit」はnページずつ、一般的にoffsetと組み合わせて使用されます
「offset」は、クエリから得られた最初のn個の結果を無視します.
「orderAsc」フィールド昇順でソート
「orderDesc」フィールド降順
「preferLocalizedStringOrder」ローカライズ文字列ソート
「orderCustom」カスタムソートには、1つの属性と対応するソートスキームASCまたはDESCの2つのパラメータが必要です.
「orderRaw」もカスタムソートで、フィールドとソートスキームを文字列に書きます.
「stringOrderCollation」もカスタムソートで、複数のリフト・ソート・スキームを日付で昇順および価格で降順にマージできます.
「noteq」はeqとは逆に、バカにして外で叩くな!に逆らう
「notIn」同上
「or」または
「like」はsql文のLIKE「%」+string+「%」
「between」つまりBETWEEN?AND ?2つの値の区間を取ることができます(ただし、この文は慎重に使用してください.データベースによって異なります.Aもあります.
「gt」は>に相当する
「ge」は>=に相当する
「lt」は<
「le」は<=に相当する
「isNull」が空です
「notisNull」は空ではありません