Github地址
LitePal配置
引用
jar包引用
Gradle引用(非GitHub项目最新版本)
1
2
3dependencies {
compile 'org.litepal.android:core:1.6.0'
}xml文件设置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<litepal>
<!--
Define the database name of your application.
By default each database name should be end with .db.
If you didn't name your database end with .db,
LitePal would plus the suffix automatically for you.
For example:
<dbname value="demo" />
-->
<dbname value="demo" />
<!--
Define the version of your database. Each time you want
to upgrade your database, the version tag would helps.
Modify the models you defined in the mapping tag, and just
make the version value plus one, the upgrade of database
will be processed automatically without concern.
For example:
<version value="1" />
-->
<version value="1" />
<!--
Define your models in the list with mapping tag, LitePal will
create tables for each mapping class. The supported fields
defined in models will be mapped into columns.
For example:
<list>
<mapping class="com.test.model.Reader" />
<mapping class="com.test.model.Magazine" />
</list>
-->
<list>
</list>
<!--
Define where the .db file should be. "internal" means the .db file
will be stored in the database folder of internal storage which no
one can access. "external" means the .db file will be stored in the
path to the directory on the primary external storage device where
the application can place persistent files it owns which everyone
can access. "internal" will act as default.
For example:
<storage value="external" />
-->
</litepal>
<!--
dbname:数据库名字
version:数据库版本号
list:映射模型
storage:配置数据库存储位置,只有internal(内部)和external(外部)两种配置
-->配置litepalApplication
直接在AndroidManifest文件中设置
1
2
3
4
5
6
7
8<manifest>
<application
android:name="org.litepal.LitePalApplication"
...
>
...
</application>
</manifest>自定义MyApplication
- 首先在AndroidManifest中指定自定义class
1
2
3
4
5
6
7
8<manifest>
<application
android:name="com.example.MyOwnApplication"
...
>
...
</application>
</manifest>- 在代码中自定义MyApplication
1
2
3
4
5
6
7
8
9public class MyOwnApplication extends AnotherApplication {
public void onCreate() {
super.onCreate();
LitePal.initialize(this);
}
...
}
使用
建表
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29public class Album extends DataSupport {
//id主键可以不写,默认生成
//不允许重复,默认值位unknown
private String name;
private float price;
private byte[] cover;
private List<Song> songs = new ArrayList<Song>();
// generated getters and setters.
...
}
public class Song extends DataSupport {
//允许为null
private String name;
private int duration;
//允许忽略
private String uselessField;
private Album album;
// generated getters and setters.
...
}修改litepal.xml文件中的映射
1
2
3
4<list>
<mapping class="org.litepal.litepalsample.model.Album" />
<mapping class="org.litepal.litepalsample.model.Song" />
</list>更改表属性
在继承DataSupport的类中修改相关属性后,在xml文件中将数据库版本+1
数据保存
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15Album 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();数据修改
1
2
3Album albumToUpdate = DataSupport.find(Album.class, 1);
albumToUpdate.setPrice(20.99f); // raise the price
albumToUpdate.save();或者
1
2
3Album albumToUpdate = new Album();
albumToUpdate.setPrice(20.99f); // raise the price
albumToUpdate.update(id);或者
1
2
3Album albumToUpdate = new Album();
albumToUpdate.setPrice(20.99f); // raise the price
albumToUpdate.updateAll("name = ?", "album");删除数据
1
DataSupport.delete(Song.class, id);
或者
1
DataSupport.deleteAll(Song.class, "duration > ?" , "350");
查找数据
1
Song song = DataSupport.find(Song.class, id);
或者
1
List<Song> allSongs = DataSupport.findAll(Song.class);
或者
1
List<Song> songs = DataSupport.where("name like ?", "song%").order("duration").find(Song.class);
异步查询
1
2
3
4
5
6DataSupport.findAllAsync(Song.class).listen(new FindMultiCallback() {
@Override
public <T> void onFinish(List<T> t) {
List<Song> allSongs = (List<Song>) t;
}
});支持代码生成数据库
1
2
3
4
5LitePalDB litePalDB = new LitePalDB("demo2", 1);
litePalDB.addClassName(Singer.class.getName());
litePalDB.addClassName(Album.class.getName());
litePalDB.addClassName(Song.class.getName());
LitePal.use(litePalDB);
后记
以上总结并不完全,还有很多其他操作没有总结,作者个人CSDN博客更全——作者CSDN