【Android -- 数据存储】LitePal 的基本使用
生活随笔
收集整理的這篇文章主要介紹了
【Android -- 数据存储】LitePal 的基本使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目前最新版本是 3.2.3。
GitHub:LitePal
基本用法
1. 在 build.gradle 添加依賴:
// 數據庫implementation 'org.litepal.guolindev:core:3.2.3'2. 在 assets 配置 litepal.xml
<?xml version="1.0" encoding="utf-8"?> <litepal><dbname value="lottery" ></dbname><version value="1" ></version><list><mapping class="com.hk.hktlottery.db.Prize"></mapping></list> </litepal>3. 配置 LitePalApplication
/*** Created on 2021/6/22 14:16** @author Gong Youqiang*/ public class MyApp extends LitePalApplication {private static Application mApplication;@Overridepublic void onCreate() {super.onCreate();mApplication = this;LitePal.initialize(this);//獲取到SQLiteDatabase的實例,創建數據庫表SQLiteDatabase db = LitePal.getDatabase();}public static Context getAppContext() {return mApplication;}}開始建表
1. Prize.java
/*** Created on 2021/7/12 10:21** @author Gong Youqiang*/ public class Prize extends LitePalSupport {@Column(unique = true)private int id;@Column(nullable = false)private String level;@Column(nullable = false)private String name;@Column(nullable = false)private int num;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getLevel() {return level;}public void setLevel(String level) {this.level = level;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getNum() {return num;}public void setNum(int num) {this.num = num;} }升級表
1. Comment.java
public class Comment extends LitePalSupport {private int id;private String content;// 自動生成get、set方法 ... }2. 修改 litepal.xml 中的配置,在映射列表中新增 Comment 類,并將版本號加 1
<?xml version="1.0" encoding="utf-8"?> <litepal><dbname value="lottery" ></dbname><version value="2" ></version><list><mapping class="com.hk.hktlottery.db.Prize"></mapping><mapping class="com.hk.hktlottery.db.Comment"></mapping></list> </litepal>增刪改查
1. 增
Prize prize = new Prize(); prize.setId(list.size()); prize.setLevel("一等獎"); prize.setName("獎勵 100 元"); prize.setNum(1); prize.save(); //這一句代碼就是將一條記錄存儲進數據庫中2. 刪
// 刪除單個記錄,id=1 LitePal.delete(Prize.class,1);//刪除數據庫中Prize表的所有記錄 LitePal.deleteAll(Prize.class); //刪除數據庫Prize表中duration大于3500的記錄 LitePal.deleteAll(Prize.class, "duration > ?" , "3500");3. 改
方法一:
方法二:
Movie movie=new Movie(); movie.setName("2Diots"); movie.setDirector("某人");//直接更新id為1的記錄 movie.update(1);方法三:
Movie movie=new Movie(); movie.setDirector("someone"); //更新所有name為2Diots的記錄,將director字段設為someone movie.updateAll("name = ?", "2Diots");Movie movie=new Movie(); movie.setName("someone"); movie.setDirector("someone"); //將更新所有name為2Diots,director為gpf的記錄name和director均改為someone movie.updateAll("name=? and director=?", "2Diots","gpf");4. 查
//查找movie表的所有記錄,返回值是一個泛型為Movie的List集合 List<Movie> allMovies = LitePal.findAll(Movie.class); //查找movie表id為1的記錄 Movie movie = LitePal.find(Movie.class,1); // 比如獲取news表中的第一條數據 News firstNews = LitePal.findFirst(News.class);// 獲取News表中的最后一條數據 News lastNews = LitePal.findLast(News.class);// 想把news表中id為1、3、5、7的數據都查出來 List<News> newsList = LitePal.findAll(News.class, 1, 3, 5, 7); // 或者 long[] ids = new long[] { 1, 3, 5, 7 }; List<News> newsList = LitePal.findAll(News.class, ids);//查找name為2Diots的記錄,并且以時長作排序,where()方法接收任意個字符串參數,其中第一個參數用于進行條件約束, //從第二個參數開始,都是用于替換第一個參數中的占位符的。那這個where()方法就對應了一條SQL語句中的where部分。 List<Movie> movies = LitePal.where("name = ?", "2Diots").order("duration").find(Movie.class); // 但是這樣會將news表中所有的列都查詢出來,也許你并不需要那么多的數據,而是只要title和content這兩列數據。那么也很簡單,我們只要再增加一個連綴就行了,如下所示: List<News> newsList = LitePal.select("title", "content").where("commentcount > ?", "0").find(News.class); //將查詢出的新聞按照發布的時間倒序排列,即最新發布的新聞放在最前面,那就可以這樣寫: List<News> newsList = LitePal.select("title", "content").where("commentcount > ?", "0").order("publishdate desc").find(News.class); //order()方法中接收一個字符串參數,用于指定查詢出的結果按照哪一列進行排序,asc表示正序排序,desc表示倒序排序,因此order()方法對應了一條SQL語句中的order by部分。 //也許你并不希望將所有條件匹配的結果一次性全部查詢出來,因為這樣數據量可能會有點太大了,而是希望只查詢出前10條數據,那么使用連綴同樣可以輕松解決這個問題,代碼如下所示: List<News> newsList = LitePal.select("title", "content").where("commentcount > ?", "0").order("publishdate desc").limit(10).find(News.class); //limit()方法接收一個整型參數,用于指定查詢前幾條數據,這里指定成10,意思就是查詢所有匹配結果中的前10條數據。 //剛才我們查詢到的是所有匹配條件的前10條新聞,那么現在我想對新聞進行分頁展示,翻到第二頁時,展示第11到第20條新聞,只需要再連綴一個偏移量就可以了,如下所示: List<News> newsList = LitePal.select("title", "content").where("commentcount > ?", "0").order("publishdate desc").limit(10).offset(10).find(News.class); //這里指定成10,就表示偏移十個位置,那么原來是查詢前10條新聞的,偏移了十個位置之后,就變成了查詢第11到第20條新聞了,如果偏移量是20,那就表示查詢第21到第30條新聞//查找所有年齡小于25歲的人 List<Person> person = LitePal.where("age < ?", 25).find(Person.class);推薦文獻:
Android數據庫高手秘籍
總結
以上是生活随笔為你收集整理的【Android -- 数据存储】LitePal 的基本使用的全部內容,希望文章能夠幫你解決所遇到的問題。