顾名思义就是sqlite的orm框架,采用oop的方式简化对sqlite的操作。
注意:在android studio2.0以后如果使用InstantRun功能,并且在android 5.0以上手机上调试会报错。强烈建议在调试时关闭InstantRun功能,release版本的app不会受到任何影响。(参考:http://stackoverflow.com/questions/36572515/dexfile-in-2-0-versions-of-android-studio-and-gradle)
首先需要在AndroidManifest.xml中配上一些参数
```Java
```
使用orm框架需要初始化DBManager,需要在Applicaion中完成。SAF中的SAFApp,没有初始化DBManager,如果需要使用SAFApp可以重写一个Application继承SAFApp,并初始化DBManager。
```Java
/**
* @author Tony Shen
*
*/
public class TestApp extends Application{
@Override
public void onCreate() {
super.onCreate();
DBManager.initialize(this);
}
}
```
db的domain使用是也是基于注解
```Java
/**
*
* 表示sqlite中autocomplete表的属性
* @author Tony Shen
*
*/
@Table(name="autocomplete")
public class Autocomplete extends DBDomain{
@Column(name="key_words",length=20,notNull=true)
public String KEY_WORDS;
@Column(name="key_type",length=20,notNull=true)
public String KEY_TYPE;
@Column(name="key_reference",length=80)
public String KEY_REFERENCE;
}
```
db的操作很简单
```Java
Autocomplete auto = new Autocomplete();
auto.KEY_TYPE = "1";
auto.KEY_WORDS = "testtest";
auto.save(); // 插入第一条记录
Autocomplete auto2 = new Autocomplete();
auto2.KEY_TYPE = "0";
auto2.KEY_WORDS = "haha";
auto2.save(); // 插入第二条记录
Autocomplete auto3 = new Autocomplete().get(1); // 获取Autocomplete的第一条记录
if (auto3!=null) {
Log.i("+++++++++++++++","auto3.KEY_WORDS="+auto3.KEY_WORDS);
} else {
Log.i("+++++++++++++++","auto3 is null!");
}
```
查询结果集
```Java
List list = new Autocomplete().executeQuery("select * from autocomplete where KEY_WORDS = 'testtest'");
Log.i("+++++++++++++++","list.size()="+list.size()); // 根据sql条件查询
List list2 = new Autocomplete().executeQuery("select * from autocomplete where KEY_WORDS = ? and Id = ?","testtest","1");
Log.i("+++++++++++++++","list2.size()="+list2.size()); // 表示查询select * from autocomplete where KEY_WORDS = 'testtest' and Id = '1'
```