android 7使用litepal,android数据库litepal使用记录
簡介:
litepal是郭霖的一款開源的android數(shù)據(jù)庫框架,采用關系映射(ORM)的模式,這是github
地址,最新版本已經(jīng)更新到1.6,支持eclipse,gridle使用如下:
compile 'org.litepal.android:core:1.6.0'
配置:
創(chuàng)建assets目錄,新建litepal.xml文件:
litepal初始化有兩種方式:
1.將你清單文件的Application換成LitePalApplication
android:name="org.litepal.LitePalApplication"
...
>
...
2.將你的Application繼承自Application,然后在onCreat(),進行l(wèi)itepal的初始化
public class MyOwnApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
LitePal.initialize(this);
}
...
}
使用litepal
創(chuàng)建實體類
litepal需要用于映射的實體類需要繼承DataSupport,并生成get和set方法,關于這兩個方法,推薦一個庫:
lombok,gridle使用添加:
compile 'org.projectlombok:lombok:1.16.18'
添加之后你的get和set方法只用在類名上面添加注解@Data就可以了,如下
@Data
public class Man{
@Column(unique = true, defaultValue = "unknown")
private int age;
private String name;
}
實體類支持注解約束:
@Column(unique = true) //是否唯一
@Column(defaultValue = "unknown") //指定字段默認值
@Column(nullable = false) //是否可以為空
@Column(ignore = true) //是否可以忽略
修改litepal.xml
當你添加表或修改表結(jié)構(gòu),都要修改litepal.xml,首先版本號要+1,如果添加表,還要添加
添加數(shù)據(jù)
Album album = new Album();
album.setName("album");
album.setPrice(10.99f);
album.setCover(getCoverImageBytes());
album.save();
Song song1 = new Song();
song1.setName("song1");
song1.setDuration(320);
song1.setAlbum(album);
song1.save();
Song song2 = new Song();
song2.setName("song2");
song2.setDuration(356);
song2.setAlbum(album);
song2.save();
更新數(shù)據(jù)
1.指定id:
Album albumToUpdate = new Album();
albumToUpdate.setPrice(20.99f); // raise the price
albumToUpdate.update(2);
2.條件更新:
Album albumToUpdate = new Album();
albumToUpdate.setPrice(20.99f); // raise the price
albumToUpdate.updateAll("name = ?", "小明");
3.多個條件用and連接
Album album= new Album();
album.setTitle("第3次更新");
album.updateAll("title = ? and age> ?", "第2次更新", "12");
4.更新全部數(shù)據(jù),將表所有數(shù)據(jù)名字修改:
Man values = new Man();
values.put("Name", "小化工");
DataSupport.updateAll(Man.class, values);
5.異步更新數(shù)據(jù)
Album album = new Album();
album.setName("album");
album.setPrice(10.99f);
album.setCover(getCoverImageBytes());
album.saveAsync().listen(new SaveCallback() {
@Override
public void onFinish(boolean success) {
}
});
刪除數(shù)據(jù)
1.指定ID
DataSupport.delete(Man.class, id);
2.條件刪除,多個條件用and連接
DataSupport.deleteAll(Man.class, "age > ?" , "15");
3.刪除全表數(shù)據(jù)
DataSupport.deleteAll(Man.class);
查詢數(shù)據(jù)
1.查詢第一條以及最后一條
News firstNews = DataSupport.findFirst(News.class);
News lastNews = DataSupport.findLast(News.class);
2.指定id
Song song = DataSupport.find(Song.class, id);
//指定多個id如下
//方式一:
List newsList = DataSupport.findAll(News.class, 1, 3, 5, 7);
//方式二:
long[] ids = new long[] { 1, 3, 5, 7 };
List newsList = DataSupport.findAll(News.class, ids);
3.查詢所有
List allSongs = DataSupport.findAll(Song.class);
4.條件查詢
查詢 Man表 中 年齡大于12 的 第5到20條 數(shù)據(jù),以插入時間倒序 排序方式呈現(xiàn),只取 “名字”和“性別”和“身高” 三列內(nèi)容。
List list = DataSupport.select("name", "sex","height")//需要的條目
.where("age> ?", "12")//條件
.order("inputTime desc")//倒序字段
.offset(5)//開始查詢位置
.limit(15)//數(shù)據(jù)長度
.find(Man.class);//查詢表
5.異步查詢,用于代替findAll
DataSupport.findAllAsync(Song.class).listen(new FindMultiCallback() {
@Override
public void onFinish(List t) {
List allSongs = (List) t;
}
});
刪除數(shù)據(jù)庫
LitePal.deleteDatabase("數(shù)據(jù)庫名");
完結(jié)
總結(jié)
以上是生活随笔為你收集整理的android 7使用litepal,android数据库litepal使用记录的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode—211. 添加与搜索单
- 下一篇: LeetCode—213. 打家劫舍 I