如果您已经使用Android SQLite数据库已有一段时间了,您会注意到以下几点:设置它需要大量的时间,并需要大量的样板代码。
I recently discovered Sugar ORM, an awesome library that makes it super simple and less time consuming to work with the SQLite database.
In case you didnt already know, an ORM (Object-Relational Mapper) allows you to represent your data as objects and then persist those objects in a relational database, automatically handling the conversion of data for you.
要通过gradle安装Sugar ORM,只需将此行添加到模块级gradle依赖项并同步您的项目:
compile 'com.github.satyan:sugar:1.5'
在撰写本文时,当前版本为1.5版。
Sugar ORM需要最少的清单文件配置。 您必须指定SugarApp通过更改应用程序标记中的android name属性将其作为您的应用程序类。 您还需要包括一些有关数据库的元数据,例如数据库名称,版,查询日志和域包名称。 您的清单文件应如下所示:
<application
android:name="com.orm.SugarApp"
android:allowBackup="true"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<meta-data android:name="DATABASE" android:value="sugar_example.db" />
<meta-data android:name="VERSION" android:value="1" />
<meta-data android:name="QUERY_LOG" android:value="true" />
<meta-data android:name="DOMAIN_PACKAGE_NAME" android:value="com.kwabenaberko" />
</application>
使用Sugar ORM时,要保留的所有数据模型或类都需要扩展SugarRecord,并且至少应具有一个空的默认构造函数,如下所示:
import com.orm.SugarRecord;
public class Developer extends SugarRecord{
private String firstname;
private String lastname;
private String favouriteLanguage;
public Developer(){
}
public Developer(String firstname, String lastname, String favouriteLanguage){
this.firstname = firstname;
this.lastname = lastname;
this.favouriteLanguage = favouriteLanguage;
}
public String getFirstname() {
return firstname;
}
public void setFirstname(String firstname) {
this.firstname = firstname;
}
public String getLastname() {
return lastname;
}
public void setLastname(String lastname) {
this.lastname = lastname;
}
public String getFavouriteLanguage() {
return favouriteLanguage;
}
public void setFavouriteLanguage(String favouriteLanguage) {
this.favouriteLanguage = favouriteLanguage;
}
}
一切设置完成后,我们就可以开始在模型上执行操作了。
Inserting a new record
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Developer developer = new Developer("Kwabena", "Berko", "JavaScript");
developer.save();
}
}
插入新记录时,糖ORM自动为您添加一个自动递增ID字段。
Selecting an existing record by its id
Developer developer = Developer.findById(Developer.class, 1); // 1 is the record's id.
Log.v("RESULTS", developer.getId() +
", " + developer.getFirstname() +
", " + developer.getLastname() +
", " + developer.getFavouriteLanguage()
);
Updating an existing record
Developer developer = Developer.findById(Developer.class, 1);
developer.setFavouriteLanguage("Golang");
developer.save();
Selecting all records
List<Developer> developers = Developer.listAll(Developer.class);
for(Developer developer : developers){
Log.v("RESULTS", developer.getId() +
", " + developer.getFirstname() +
", " + developer.getLastname() +
", " + developer.getFavouriteLanguage()
);
}
Deleting an existing record
Developer developer = Developer.findById(Developer.class, 1);
developer.delete();
编码愉快!