老婆保佑逃顶,代碼無BUG
前言
其實這個litepal,官網(wǎng)已經(jīng)講的很詳細了充甚,這里只是做個筆記以政,我感覺,醒目中伴找,使用litepal盈蛮,真的很方便,想想以前使用原生的寫法技矮,真是累啊
目錄
- 如何使用
- 引入
- 2.配置環(huán)境
-
- 開始使用
- (1)創(chuàng)建表格
- (2)升級表
- (3) 數(shù)據(jù)操作
官網(wǎng)
LitePal
如何使用
1. 引入
compile 'org.litepal.android:core:1.6.1'
2.配置環(huán)境
(1)在項目的assets文件夾中創(chuàng)建一個文件抖誉,并將其命名為litepal.xml。然后將以下代碼復制到它
屏幕快照 2018-01-03 下午5.17.03.png
<?xml version="1.0" encoding="utf-8"?>
<litepal>
<!-- 數(shù)據(jù)庫名字 -->
<dbname value="demo" />
<!-- 數(shù)據(jù)庫版本 -->
<version value="1" />
<!-- 數(shù)據(jù)庫對象 -->
<list>
<mapping class="com.allens.litepaldemo.User"></mapping>
</list>
</litepal>
(2)配置LitePalApplication
public class MyApp extends Application {
@Override
public void onCreate() {
super.onCreate();
LitePal.initialize(this);
}
}
3. 開始使用
(1)創(chuàng)建表格
public class User extends DataSupport {
private String name;
private int age;
//get set
}
補充說明: 使用注解對字段進行約束
@Column(unique = true) //是否唯一
@Column(defaultValue = "default") //指定字段默認值
@Column(nullable = false) //是否可以為空
@Column(ignore = true) //是否可以忽略
然后將這些模型添加到litepal.xml中的映射列表中:
<list>
<mapping class="com.allens.litepaldemo.User"></mapping>
</list>
好衰倦!這些表格將在您下次操作數(shù)據(jù)庫時生成袒炉。例如,使用以下代碼獲取SQLiteDatabase:
SQLiteDatabase db = LitePal 耿币。getDatabase();
(2)升級表
在litepal.xml中增加版本號
< version value = “ 2 ” > </ version >
(3) 數(shù)據(jù)操作
package com.allens.litepaldemo;
import android.content.ContentValues;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import com.apkfuns.logutils.LogUtils;
import org.litepal.crud.DataSupport;
import org.litepal.crud.callback.FindMultiCallback;
import org.litepal.tablemanager.Connector;
import org.litepal.util.LogUtil;
import java.util.List;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SQLiteDatabase db = Connector.getDatabase();
findViewById(R.id.btn_insert).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//第一種 不推薦
// ContentValues cv = new ContentValues();
// cv.put("name", "江海洋");
// cv.put("age", 25);
// db.insert("User", null, cv);
//第二種 推薦
User user = new User();
user.setAge(19);
user.setName("Allens");
user.save();
}
});
findViewById(R.id.btn_query).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// List<User> list = DataSupport.findAll(User.class);
// LogUtils.e(list);
//異步查詢
DataSupport.findAllAsync(User.class).listen(new FindMultiCallback() {
@Override
public <T> void onFinish(List<T> t) {
List<User> allSongs = (List<User>) t;
LogUtils.e(allSongs);
LogUtils.e(allSongs.size());
}
});
}
});
findViewById(R.id.btn_update).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
User user = DataSupport.find(User.class, 1);
user.setName("Allens");
user.setAge(18);
user.save();
}
});
findViewById(R.id.btn_delete).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//刪除某個數(shù)據(jù)
// int delete = DataSupport.delete(User.class, 1);
// LogUtils.e("delete--->" + delete);
//刪除全部數(shù)據(jù)
int i = DataSupport.deleteAll(User.class);
LogUtils.e("delete--->" + i);
}
});
}
}