AndroidデータベースのLitepalベビーシッターレベルのゼロベース詳細使用


一.LitePalの紹介
LitepalはAndroid郭霖大神のオープンソースAndroidデータベースのオープンソースフレームワークです.オブジェクトリレーションシップマッピング(ORM)のモデルを採用しています.これは私たちが非常によく理解できるデータベースです.エンティティクラスは私たちのデータベースのテーブルに対応しています.このライブラリには多くの方法がカプセル化されています.SQL文の理解が少なくても、データライブラリを構築することができ、さまざまな削除変更の操作ができます.Litepal公式リンク.
二.Litepalの構成
1.依存の追加
まず公式アドレスに行って、現在の最新の依存を見つけて、私たちのプロジェクトのdependenciesの下で追加します:現在の私の最新バージョンは3.2です.3
dependencies {
    implementation 'org.litepal.guolindev:core:3.2.3'
}

2.Litepalの構成
まず私たちのプロジェクトAndroidManifestに行かなければなりません.xmlでデータベースを構成すると、Litepalが正常に動作し、android:name=「org.litepal.LitePalApplication」:

    
        ...
    



もしあなたがすでに自分のアプリケーションのconfigureを持っていたら、例えば:

    
        ...
    


マイアプリケーションにLitePalを加えることができますinitialize(this);,に表示されます.
public class MyApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        LitePal.initialize(this);
    }
    ...
}

3.litepalを作成する.xmlファイル
app/src/mainディレクトリ->new Directoryを右クリックし、assetsディレクトリを作成し、そのディレクトリの下でnew File 1 litepal.xmlファイル、次に内容を編集します.


    
    
    
    
   

  • dbnameラベルデータベースの名前を指定するための
  • versionラベルは指定データベースバージョンであり、テーブルを更新する際にこの値
  • を大きくする必要がある.
  • listラベルは、マッピングモデルを指定するために使用されます.つまり、エンティティクラスのパスをmappingラベルで
  • に挿入します.
    これまでlitepalの構成作業はすべて完了しましたので、これから本格的に使いましょう.
    三.Litepalの使用
    1.データベースの作成
    まず私达の実体のクラスを定义して、ここで私は简単化して、まず1つのNewsニュースのクラスと1つの内容のクラスContentを定义します:私达が実体のクラスに対してデータベースの操作を行う前に、必ず私达のデータベースにどれが私达の実体のクラスであることを知らせて、それに対して操作することができて、だから私达の実体のクラスに先にLitepalSupportのこのクラスを継承させる必要があります!!!
    public class News extends LitepalSupport{
    
    	private int id;
    	
    	@Column(unique = true, defaultValue = "unknown")
    	private String title;
    	
    	private String Content;
    	
    	//getter , setter   
    	//...
    }
    
    public class Comment extends LitepalSupport{
    
    	private int id;
    	
    	@Column(nullable = false)
    	private String content;
    
    	//getter , setter   
    	//...
    }
    

    ここでは典型的な2つのjavaBeanクラスで、ニュースのid、タイトル、コンテンツ、コメントクラスのidとコンテンツ、および彼らのgetterとsetterの方法を定義します.クラスを限定する注釈もあります.ここでは、関係マッピングの最も直感的な体験を感じたのではないでしょうか.
    エンティティクラスを定義し、マッピングモデルのリストに追加し、litepalを変更することを忘れないでください.xmlファイル
    
    
        
        
        
        
        
        
       
    
    

    これにより、データベースを任意に操作するだけでデータベースを初期化することができ、Litepalを呼び出すことができます.getDatabase()メソッド.成功したかどうかはどう思いますか.Android StudioのView->Tools Windows->Device File Explorerにアクセスしてdata/data/<パッケージ名>/databasesに入り、次の2つのファイルを生成できます.そのうちの1つはdbで終わります.これが私たちのデータベースファイルです.その内容を見たい場合は、db shellでデータベースの作成状況を確認する必要があります.これはあまり展開しません.見たい友達は自分で見に行きます.
    2.データベースのアップグレード
    たとえば、現在、NewsクラスはCommentと関係マッピングを確立する必要があります.これは、1対の複数の関係です.つまり、1つのNewsクラスに複数のCommentクラスが対応していることです.これにより、クラスを変更できます.
    	public class News{
    
    	private int id;
    	
    	@Column(unique = true, defaultValue = "unknown")
    	private String title;
    	
    	private String Content;
    	
    	private List commentList = new ArrayList<>();
    	
    	//getter , setter   
    	//...
    }
    }
    
    public class Comment{
    
    	private int id;
    	
    	@Column(nullable = false)
    	private String content;
    	
    	private News news;
    	
    	//getter , setter   
    	//...
    

    これにより、Newsクラスにprivate List commentList=new ArrayList<>();ここでは特にcommentListに注意して、まず自分でインスタンス化して、私たちの後でcommentの記憶を便利にして、対応するCommentは私たちの1つのNewsだけに対応しているので、その中にprivate News newsを加えます;
    エンティティ・クラスが変更されました.データベースに更新を通知するにはどうすればいいですか?簡単ですlitepalをxmlのバージョン番号に1を加えればいいです!value=1 -> value=2
    
    
        
        
        
        
        
        
       
    
    

    3.LitepalのCRUD
    ①データの追加
    Comment comment1 = new Comment();
    comment1.setContent("      !");
    comment1.save();
    
    Comment comment2 = new Comment();
    comment2.setContent("        !");
    comment2.save();
    
    News new = new News();
    new.setTitle("     ");
    new.setContent("            ");
    new.getCommentList().add(comment1);
    new.getCommentList().add(comment2);
    new.save();
    

    注意事項
  • まず最初にsave()メソッドを呼び出し、Litepalデータベースにエンティティクラスオブジェクトを保存する
  • 次に、NewsクラスとCommentクラスのidは私たちが指定する必要はありません.フレームワークは
  • を自動的に生成します.
  • 両クラスのマッピング関係を指定すると、ここでは一対多の関係を指し、その複数のクラス(Comment)の中のnewsオブジェクトは私たちが設定する必要はなく、データベースの中で自動的にnews_idフィールドに変換され、このフィールドはそのNewsに対応するコメントであることを示し、new.getCommentList()を呼び出す.add(comment 1)の場合、Litepalフレームワークはこの2つのクラスのマッピング関係を自動的に設定します.
  • 特定のNewsオブジェクトにどのようなコメントがあるかを調べるときは、このように調べて、あなたのこのオブジェクトのidに基づいて、すべてのcommentのnews_に一致することができます.id:
  • List commentList = LitePal
    					.where("news_id=?",String.valueOf(news.getId()))
    					.find(Comment.Class);
    

    ②照会データ
    //     new
    List newList  = LitePal.findAll(News.class);
    
    //        
    //
    List newList1  = LitePal
    		.where("title=? and content=?","     ","            ")
    		.find(News.class);
    
    

    ③データの更新
    //     :
    News news = new News();
    news.setContent("          !!");
    news.upDateAll("title=?","     ").find(News.class);
    
    //     :
    News news = LitePal.find(News.class,1); //1 id 
    news.setContent("          !!");
    news.save();
    
    //     
    News news = new News();
    news.setContent("          !!");
    news.update(id);
    
    

    ④データの削除
    //   
    LitePal.deleteAll(News.class,"title=?","     ");
    
    //   
    LitePal.delete(News.class,id);
    

    4.複数のデータベースを使用する
    1つ目の方法:コード方式の作成
    LitePalDB litePalDB = new LitePalDB("otherDataBase", 1);
    litePalDB.addClassName(Singer.class.getName());
    litePalDB.addClassName(Album.class.getName());
    litePalDB.addClassName(Song.class.getName());
    LitePal.use(litePalDB);
    
    

    2つ目はlitepalに似ていますxml作成、ここではotherDataBase.xml:
    LitePalDB litePalDB = LitePalDB.fromDefault("otherDataBase");
    LitePal.use(litePalDB);
    
    

    いつでもデフォルトのデータベースに戻る:LitePal.useDefault(); データベースの削除:LitePal.deleteDatabase(“otherDataBase”);
    四.まとめ
    LitePal関係型データベースは使いやすいので、文章に疑問や指摘があれば、コメントエリアのコメントを歓迎します.文章が役に立つと思ったら、いいねやコレクションをクリックするのは筆者の最大の支持です!ありがとう!