litepal
Android數據庫框架 - LitePal學習筆記
簡述
LitePal是郭神(郭霖)在2014年的杰作,三年后在github上有了一個更新,故來學習一番,沒想到還挺好用,這里做下筆記。LitePal是一款開源的Android數據庫框架,它采用了對象關系映射(ORM)的模式,并將我們平時開發時最常用到的一些數據庫功能進行了封裝,使得不用編寫一行SQL語句就可以完成各種建表、増刪改查的操作。并且LitePal很“輕”,jar包只有100k不到,而且近乎零配置,這一點和hibernate這類的框架有很大區別。
github:https://github.com/LitePalFramework/LitePal
一、LitePal的基本用法
1. 引入Jar包或依賴
1)使用gradle依賴
dependencies {compile 'org.litepal.android:core:1.5.0' }2)導入jar包
①jar包:https://github.com/LitePalFramework/LitePal/raw/master/downloads/litepal-1.5.0.jar
②源碼包:https://github.com/LitePalFramework/LitePal/raw/master/downloads/litepal-1.5.0-src.jar
通過上述地址將jar包下載下來后復制到libs目錄下即可。
2. 配置litepal.xml
在assets目錄下創建一個litepal.xml文件,復制以下代碼進去:
xml version="1.0" encoding="utf-8" <litepal> <dbname value="數據庫名" ></dbname> <span class="hljs-tag"><<span class="hljs-name">version</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"數據庫版本號,用于更新數據庫"</span> ></span><span class="hljs-tag"></<span class="hljs-name">version</span>></span> <span class="hljs-tag"><<span class="hljs-name">list</span>></span><span class="hljs-comment"><!--這里是類映射--></span> <span class="hljs-tag"></<span class="hljs-name">list</span>></span></litepal>
3. 配置LitePalApplication
1)如果你的項目中沒有自定義APP,則直接在清單文件中進行如下配置:
<manifest> <application android:name="org.litepal.LitePalApplication" ... > ... </application> </manifest>2)如果你項目中有繼承Application的自定義APP:
①把 extends Application 換成 extends LitePalApplication.
②在清單文件中使用你自定義的APP,如自定義的APP為MyApplication:
<manifest> <application android:name="com.example.MyApplication" ... > ... </application> </manifest>3)如果你項目中的自定義APP是繼承了一個jar包中的第三方Application(即:源碼修改不了):
方案一:
方案二:
public class MyOwnApplication extends AnotherApplication { <span class="hljs-meta">@Override</span> <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">onCreate</span><span class="hljs-params">()</span> </span>{<span class="hljs-keyword">super</span>.onCreate();LitePal.initialize(<span class="hljs-keyword">this</span>); } ...}
二、使用LitePal建表
例子:假設開發的是一款新聞類APP,本地需要一張新聞表記錄新聞,因為該框架是ORM框架,即需要一個新聞類News來表示新聞表,通過新聞類創建新聞表,只需要2步:
1、創建一個實體類
public class News { <span class="hljs-keyword">private</span> <span class="hljs-keyword">int</span> id; <span class="hljs-keyword">private</span> String title; <span class="hljs-keyword">private</span> String content; <span class="hljs-keyword">private</span> Date publishDate; <span class="hljs-keyword">private</span> <span class="hljs-keyword">int</span> commentCount; <span class="hljs-comment">// 自動生成get、set方法 </span> ...}
2、修改assets目錄下的litepal.xml文件
xml version="1.0" encoding="utf-8" <litepal> <dbname value="demo" ></dbname> <span class="hljs-tag"><<span class="hljs-name">version</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"1"</span> ></span><span class="hljs-tag"></<span class="hljs-name">version</span>></span> <span class="hljs-tag"><<span class="hljs-name">list</span>></span> <span class="hljs-tag"><<span class="hljs-name">mapping</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"com.example.databasetest.model.News"</span>></span><span class="hljs-tag"></<span class="hljs-name">mapping</span>></span> <span class="hljs-tag"></<span class="hljs-name">list</span>></span></litepal>
三、使用LitePal升級表
升級表的場景有兩種:
① 增加表
② 修改表結構
1、增加一張表
例子:對上述的新聞類APP增加記錄評論的功能,那么就需要多一張評論表,即多一個評論類Comment(這里不考慮表之間的關系,本次升級只是多增加一張表)。
1)、根據升級需求創建實體類
public class Comment { <span class="hljs-keyword">private</span> <span class="hljs-keyword">int</span> id; <span class="hljs-keyword">private</span> String content; <span class="hljs-comment">// 自動生成get、set方法 </span> ...}
2)、修改assets目錄下的litepal.xml文件
升級需要將version節點的value值+1。
xml version="1.0" encoding="utf-8" <litepal> <dbname value="demo" ></dbname> <span class="hljs-tag"><<span class="hljs-name">version</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"2"</span> ></span><span class="hljs-tag"></<span class="hljs-name">version</span>></span> <span class="hljs-tag"><<span class="hljs-name">list</span>></span> <span class="hljs-tag"><<span class="hljs-name">mapping</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"com.example.databasetest.model.News"</span>></span><span class="hljs-tag"></<span class="hljs-name">mapping</span>></span> <span class="hljs-tag"><<span class="hljs-name">mapping</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"com.example.databasetest.model.Comment"</span>></span><span class="hljs-tag"></<span class="hljs-name">mapping</span>></span> <span class="hljs-tag"></<span class="hljs-name">list</span>></span></litepal>
2、修改之前的表結構
例子:假設上述的評論類Comment是上個版本中少了一個表示發布時間的屬性publishDate,則在這次要發布的版本中需要加入。
1)、根據升級需求修改實體類
public class Comment { <span class="hljs-keyword">private</span> <span class="hljs-keyword">int</span> id; <span class="hljs-keyword">private</span> String content; <span class="hljs-keyword">private</span> Date publishDate; <span class="hljs-comment">//多了一個表示發布時間的屬性</span><span class="hljs-comment">// 自動生成get、set方法 </span> ...}
2)、修改assets目錄下的litepal.xml文件
<litepal> <dbname value="demo" ></dbname> <span class="hljs-tag"><<span class="hljs-name">version</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"3"</span> ></span><span class="hljs-tag"></<span class="hljs-name">version</span>></span> ...</litepal>
四、使用LitePal建立表關聯
1、一對一:
例子:每篇新聞(類News)都對應著一個簡介(類Introduction),一個簡介對應著一篇新聞。
1)、在一個類中持有另一方的引用
①簡介類
public class Introduction { <span class="hljs-keyword">private</span> <span class="hljs-keyword">int</span> id; <span class="hljs-keyword">private</span> String guide; <span class="hljs-keyword">private</span> String digest; <span class="hljs-comment">// 自動生成get、set方法 </span>}
②新聞類(持有簡介類)
public class News { ... private Introduction introduction; //一篇新聞對應著一個簡介 <span class="hljs-comment">// 自動生成get、set方法 </span>}
2)、修改litepal.xml中的版本號,加入新表對就實體類的引用,更新數據庫。
xml version="1.0" encoding="utf-8" <litepal> <dbname value="demo" ></dbname> <span class="hljs-tag"><<span class="hljs-name">version</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"4"</span> ></span><span class="hljs-tag"></<span class="hljs-name">version</span>></span> <span class="hljs-tag"><<span class="hljs-name">list</span>></span> <span class="hljs-tag"><<span class="hljs-name">mapping</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"com.example.databasetest.model.News"</span>></span><span class="hljs-tag"></<span class="hljs-name">mapping</span>></span> <span class="hljs-tag"><<span class="hljs-name">mapping</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"com.example.databasetest.model.Introduction"</span>></span><span class="hljs-tag"></<span class="hljs-name">mapping</span>></span> <span class="hljs-tag"></<span class="hljs-name">list</span>></span></litepal>
2、多對一:
例子:一篇新聞(類News)有多條評論(類Comment)
1)、在少的一方持有多的一方的集合,在多的一方持有少的一方的引用
①新聞類(少的一方)
public class News { ... private Introduction introduction; <span class="hljs-keyword">private</span> <span class="hljs-keyword">List</span><Comment> commentList = <span class="hljs-keyword">new</span> ArrayList<Comment>(); <span class="hljs-comment">//一篇新聞對應多條評論 </span><span class="hljs-comment">// 自動生成get、set方法 </span>}
②簡介類(多的一方)
public class Comment { ... private News news; //一條評論對應一篇新聞 <span class="hljs-comment">// 自動生成get、set方法 </span>}
2)、修改litepal.xml中的版本號,更新數據庫。
xml version="1.0" encoding="utf-8" <litepal> <dbname value="demo" ></dbname> <span class="hljs-tag"><<span class="hljs-name">version</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"5"</span> ></span><span class="hljs-tag"></<span class="hljs-name">version</span>></span> <span class="hljs-tag"><<span class="hljs-name">list</span>></span> <span class="hljs-tag"><<span class="hljs-name">mapping</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"com.example.databasetest.model.News"</span>></span><span class="hljs-tag"></<span class="hljs-name">mapping</span>></span> <span class="hljs-tag"><<span class="hljs-name">mapping</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"com.example.databasetest.model.Introduction"</span>></span><span class="hljs-tag"></<span class="hljs-name">mapping</span>></span> <span class="hljs-tag"><<span class="hljs-name">mapping</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"com.example.databasetest.model.Comment"</span>></span><span class="hljs-tag"></<span class="hljs-name">mapping</span>></span> <span class="hljs-tag"></<span class="hljs-name">list</span>></span></litepal>
3、多對多:
例子:一篇新聞(類News)對應的多個類別(類Category),如iphone2000發布,可以是手機類、科技類,還可以是頭條。
1)、彼此持有對方的集合
①新聞類
public class News { ... private Introduction introduction; <span class="hljs-keyword">private</span> <span class="hljs-keyword">List</span><Comment> commentList = <span class="hljs-keyword">new</span> ArrayList<Comment>(); <span class="hljs-keyword">private</span> <span class="hljs-keyword">List</span><Category> categoryList = <span class="hljs-keyword">new</span> ArrayList<Category>(); <span class="hljs-comment">//一篇新聞對應多種類別</span><span class="hljs-comment">// 自動生成get、set方法 </span>}
②類別類
public class Category { ... private List<News> newsList = new ArrayList<News>(); //一種類別對應多篇新聞 <span class="hljs-comment">// 自動生成get、set方法 </span>}
2)、修改litepal.xml中的版本號,更新數據庫。
xml version="1.0" encoding="utf-8" <litepal> <dbname value="demo" ></dbname> <span class="hljs-tag"><<span class="hljs-name">version</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"6"</span> ></span><span class="hljs-tag"></<span class="hljs-name">version</span>></span> <span class="hljs-tag"><<span class="hljs-name">list</span>></span> <span class="hljs-tag"><<span class="hljs-name">mapping</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"com.example.databasetest.model.News"</span>></span><span class="hljs-tag"></<span class="hljs-name">mapping</span>></span> <span class="hljs-tag"><<span class="hljs-name">mapping</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"com.example.databasetest.model.Comment"</span>></span><span class="hljs-tag"></<span class="hljs-name">mapping</span>></span> <span class="hljs-tag"><<span class="hljs-name">mapping</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"com.example.databasetest.model.Introduction"</span>></span><span class="hljs-tag"></<span class="hljs-name">mapping</span>></span> <span class="hljs-tag"><<span class="hljs-name">mapping</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"com.example.databasetest.model.Category"</span>></span><span class="hljs-tag"></<span class="hljs-name">mapping</span>></span> <span class="hljs-tag"></<span class="hljs-name">list</span>></span></litepal>
五、使用LitePal的存儲操作(增)
因為LitePal可以通過一個普通的實體類把對應的表創建出來或者對表升級,所以沒有要求繼承指定的類或實現指定的接口。但是,如果要對表進行存儲操作,則就有一個要求了,那就是這些實體類必須繼承DataSupport。
1、讓實體類繼承DataSupport
public class News extends DataSupport{ ...... <span class="hljs-comment">// 自動生成get、set方法 </span>}
2、使用save()對單個實體數據進行保存
例子:對一篇新聞進行保存
News news = new News(); news.setTitle("這是一條新聞標題"); news.setContent("這是一條新聞內容"); news.setPublishDate(new Date()); news.save();- tip:save()是不會拋出異常的,且返回的是boolean。
常規判斷數據是否保存成功的方式如下:
if (news.save()) { Toast.makeText(context, "存儲成功", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(context, "存儲失敗", Toast.LENGTH_SHORT).show(); }3、使用saveThrows()對單個實體數據進行保存
例子:對一篇新聞進行保存
News news = new News(); news.setTitle("這是一條新聞標題"); news.setContent("這是一條新聞內容"); news.setPublishDate(new Date()); news.saveThrows();- tip:saveThrows()是當保存失敗時會拋出異常的,所以,可以通過對這個異常進行捕獲來處理存儲失敗的情況。
3、使用DataSupport.saveAll()對多個實體數據進行保存
List<News> newsList; ... DataSupport.saveAll(newsList);4、多對一的關系的數據保存
Comment comment1 = new Comment(); comment1.setContent("好評!"); comment1.setPublishDate(new Date()); comment1.save(); //保存了第一條評論 Comment comment2 = new Comment(); comment2.setContent("贊一個"); comment2.setPublishDate(new Date()); comment2.save(); //保存了第二條評論 News news = new News(); news.getCommentList().add(comment1); news.getCommentList().add(comment2); //把前兩條保存過的評論添加到News對象的評論集合中 news.setTitle("第二條新聞標題"); news.setContent("第二條新聞內容"); news.setPublishDate(new Date()); news.setCommentCount(news.getCommentList().size()); news.save(); //保存News對象5、使用saveAsync()對單個數據進行異步保存
News news = new News(); news.setTitle("這是一條新聞標題"); news.setContent("這是一條新聞內容"); news.setPublishDate(new Date()); news.saveAsync().listen(new SaveCallback() {public void onFinish(boolean success) { }});
6、當數據保存成功時,對象中的id會被賦值
當調用save()方法或saveThrows()方法存儲成功之后,LitePal會自動將該條數據對應的id賦值到實體類的id字段上。
以下做個實驗:
打印結果如下:
news id is 0 news id is 1六、使用LitePal的修改和刪除操作(刪改)
使用LitePal的修改和刪除操作分別有兩種方式:
- ①使用DataSupport類中的靜態方法(即實體類不需要繼承DataSupport)。
- ②使用繼承了DataSupport的實體類中的方法。
*tip:方式①中必須使用ContentValues類,而方式②不用。
1、修改操作
1)修改指定id的數據
①使用DataSupport類中的update()靜態方法:
DataSupport.update(實體類.class,ContentValues,id值)
ContentValues values = new ContentValues(); values.put("title", "今日iPhone6發布"); DataSupport.update(News.class, values, 2);②使用繼承了DataSupport的實體類中的方法:
obj.update(id值)
News updateNews = new News(); //News必須繼承DataSupport updateNews.setTitle("今日iPhone6發布"); updateNews.update(2);2)修改指定條件的數據
①使用DataSupport類中的updateAll()靜態方法:
DataSupport.updateAll(實體類.class,ContentValues,條件組)
ContentValues values = new ContentValues(); values.put("title", "今日iPhone6 Plus發布"); DataSupport.updateAll(News.class, values, "title = ? and commentcount > ?", "今日iPhone6發布", "0");②使用繼承了DataSupport的實體類中的方法:
obj.updateAll(條件組)
News updateNews = new News(); //News必須繼承DataSupport updateNews.setTitle("今日iPhone6發布"); updateNews.updateAll("title = ? and commentcount > ?", "今日iPhone6發布", "0");3)修改全表數據
DataSupport.updateAll(實體類.class,ContentValues)
例子:把news表中所有新聞的標題都改成“今日iPhone6發布”。
ContentValues values = new ContentValues(); values.put("title", "今日iPhone6 Plus發布"); DataSupport.updateAll(News.class, values);4)將對應字段修改為默認值
obj.setToDefault("字段名")
該方法是針對繼承了DataSupport的實體類來說的!!!
News updateNews = new News(); //News必須繼承DataSupport updateNews.setToDefault("commentCount"); updateNews.updateAll();2、刪除操作
*刪除操作的有幾個地方需要注意:
- 只能刪除持久化過的數據,所謂持久化過的數據,通俗的說就是保存過的數據,也就是保存或查詢出來的數據才能被刪除。
- 如果刪除的數據id是另一張表中的外鍵,則在刪除該數據時,別一張表中的關聯數據也會被刪除。
- 繼承了DataSupport的實體類沒有deleteAll方法,所以只有一種刪除指定條件的數據方式(即:DataSupport.deleteAll())。
- 最后切記,多條件時只能用單詞and連接條件,不能用符號&!!!
1)刪除指定id的數據
①使用DataSupport類中的delete()靜態方法:
DataSupport.delete(實體類.class,id值)
DataSupport.delete(News.class, 2);②使用繼承了DataSupport的實體類中的方法:
obj.delete(id值)
這里new出了一個News對象,這個對象明顯是沒有持久化的,此時調用delete()方法則不會刪除任何數據。
News news = new News(); news.delete();如果我們之前將這個對象持久化過了,那么調用delete()方法就會把這個對象對應的數據刪除掉了。
News news = new News(); news.setTitle("這是一條新聞標題"); news.setContent("這是一條新聞內容"); news.save(); ... news.delete();可以使用DataSupport中的isSaved()方法,判斷對象是否持久化。
News news; ... if (news.isSaved()) { news.delete(); }2)刪除指定條件的數據
DataSupport.deleteAll(實體類.class,條件組)
DataSupport.deleteAll(News.class, "title = ? and commentcount = ?", "今日iPhone6發布", "0");3)刪除全表數據
DataSupport.deleteAll(實體類.class)
DataSupport.deleteAll(News.class);七、使用LitePal的查詢(查)
1、簡單查詢
1)查詢單條數據
①查詢指定id數據
News news = DataSupport.find(News.class, 1);②查詢第一條數據
News firstNews = DataSupport.findFirst(News.class);③查詢最后一條數據
News lastNews = DataSupport.findLast(News.class);2)查詢多條數據
①查詢指定多個id數據
//方式一: List<News> newsList = DataSupport.findAll(News.class, 1, 3, 5, 7);//方式二:
long[] ids = new long[] { 1, 3, 5, 7 };
List<News> newsList = DataSupport.findAll(News.class, ids);
②查詢表中所有數據
List<News> allNews = DataSupport.findAll(News.class);2、連綴查詢
例子:查詢 新聞表 中 評論數大于0 的 第11到20條 數據,以 發布時間倒序 排序方式呈現,只取 “標題”和“內容” 兩列內容。
一般的sql語句如下:
select title,content from news where commentcount > 0 order by publishdate desc limit 10,10;使用LitePal的連綴查詢,代碼如下:
List<News> newsList = DataSupport.select("title", "content").where("commentcount > ?", "0").order("publishdate desc").offset(10).limit(10).find(News.class);*tip:其中select、where、order、offset、limit可以任意放置位置,可以根據自己的需求任意刪減,但find不能去掉。
3、激進查詢
LitePal的默認查詢是懶查詢,即:只能查詢單表中的數據,關聯表中的數據無法查到。
1)如何使用激進查詢
如果需要將關聯表中的數據一起查出(激進查詢),可以將find()方法的最后一個參數(boolean isEager)設置為true即可,如:
News news = DataSupport.find(News.class, 1, true); List<Comment> commentList = news.getCommentList();2)激進查詢的缺點:
- 一旦關聯表中的數據很多,查詢速度可能就會非常慢。
- 激進查詢只能查詢出指定表的關聯表數據,但是沒法繼續迭代查詢關聯表的關聯表數據。
3)使用懶查詢代替激進查詢
激進查詢不被LitePal推薦,推薦使用懶查詢,如果要使用懶查詢,可以對實體類做如下修改,以做到關聯表查詢:
public class News extends DataSupport{ ... public List<Comment> getComments() { return DataSupport.where("news_id = ?", String.valueOf(id)).find(Comment.class); } }*tip:只有該getComments()方法被調用的時候,才會去查詢關聯數據。這種寫法會比激進查詢更加高效也更加合理。
4、原生查詢
DataSupport.findBySQL(條件組);
Cursor cursor = DataSupport.findBySQL("select * from news where commentcount>?", "0");八、使用LitePal的聚合函數
LitePal中一共提供了count()、sum()、average()、max()和min()這五種聚合函數
1、count()
count()方法主要是用于統計行數的
DataSupport.count(實體類.class)
例子:統計news表中一共有多少行
int result = DataSupport.count(News.class); //使用連綴查詢,增加查詢條件 int result = DataSupport.where("commentcount = ?", "0").count(News.class);2、sum()
sum()方法主要是用于對結果進行求合的
DataSupport.sum(實體類.class, "要求合的字段", 結果類型)
例子:統計news表中評論的總數量
int result = DataSupport.sum(News.class, "commentcount", int.class); // 也可以是float、double*tip:如果要求合的字段是非法的,如String,則返回結果是0。
3、average()
average()方法主要是用于統計平均數的
DataSupport.average(實體類.class, "要求平均數的字段")
例子:統計news表中平均每條新聞有多少評論
double result = DataSupport.average(News.class, "commentcount"); //默認返回值就是double,因為求平均數大多時候都會有小數,//使用double可以最大程序保留小數位的精度。*tip:如果要求平均數的字段是非法的,如String,則返回結果是0。
4、max()
max()方法主要用于求出某個列中最大的數值
DataSupport.max(實體類.class, "要求最大值的字段", 結果類型)
例子:news表中所有新聞里面最高的評論數是多少
int result = DataSupport.max(News.class, "commentcount", int.class);5、min()
min()方法主要用于求出某個列中最小的數值
DataSupport.min(實體類.class, "要求最小值的字段", 結果類型)
例子:news表中所有新聞里面最少的評論數是多少
int result = DataSupport.min(News.class, "commentcount", int.class);九、使用注解對字段進行約束
使用注解@Column可以對字段進行約束,共有4種如下約束:
(unique = true) //是否唯一 (defaultValue = "unknown") //指定字段默認值 (nullable = false) //是否可以為空 (ignore = true) //是否可以忽略例子:一張新聞表,主鍵唯一,標題不能為空,內容有默認值。
public class News extends DataSupport { <span class="hljs-meta">@Column</span>(unique = <span class="hljs-keyword">true</span>) <span class="hljs-keyword">private</span> <span class="hljs-keyword">int</span> id; <span class="hljs-meta">@Column</span>(nullable = <span class="hljs-keyword">false</span>) <span class="hljs-keyword">private</span> String title; <span class="hljs-meta">@Column</span>(defaultValue = <span class="hljs-string">"我是內容"</span>) <span class="hljs-keyword">private</span> String content; <span class="hljs-keyword">private</span> Date publishDate; <span class="hljs-keyword">private</span> <span class="hljs-keyword">int</span> commentCount; <span class="hljs-comment">// 自動生成get、set方法 </span> ...}
十、對多個數據庫的支持
如果項目中用到了多個數據庫,LitePal也可以支持,在程序運行的時候可以創建多個數據庫。:
1、創建一個全新的數據庫
LitePalDB litePalDB = new LitePalDB("db2", 1); //創建一個名為"db2"的第二個數據庫 litePalDB.addClassName(Singer.class.getName()); //將實體類Singer等與db2進行關聯 litePalDB.addClassName(Album.class.getName()); litePalDB.addClassName(Song.class.getName()); LitePal.use(litePalDB); //使用db2數據庫2、創建一個結構跟舊數據庫一樣的數據庫
結構跟舊數據庫一樣的意思是:litepal.xml配置一樣。
LitePalDB litePalDB = LitePalDB.fromDefault("新數據庫名"); LitePal.use(litePalDB);3、換回默認數據庫(原來舊的數據庫)
LitePal.useDefault();4、刪除任意數據庫
LitePal.deleteDatabase("數據庫名"); </div></div>總結
- 上一篇: Aspose.Java实现word转pd
- 下一篇: 解决torch.cuda.is_avai