Sugar:简化 Android 数据库操作的轻量级 ORM 框架
Sugar 是一个专为 Android 平台设计的轻量级 ORM(对象关系映射)框架,旨在让开发者以极简的方式操作 SQLite 数据库,无需编写繁琐的 SQL 语句。它通过注解驱动的方式自动管理表结构、CRUD 操作与实体关联,显著降低数据库开发门槛。
1. 核心依赖与集成方式
在 Android 项目中引入 Sugar,只需在 build.gradle(Module: app)中添加依赖:
dependencies {
implementation 'com.github.chennaione:sugar:1.6'
}
同时,在 AndroidManifest.xml 的 <application> 标签内添加元数据,指定数据库名称:
<application
android:name="com.orm.SugarApp"
android:label="@string/app_name">
...
</application>
若需自定义数据库名称或版本,可继承 SugarApp 并重写构造方法:
public class MyApp extends SugarApp {
@Override
public void onCreate() {
super.onCreate();
SugarDb sugarDb = new SugarDb(this, "my_custom_db", 2);
SugarDb.setDatabase(sugarDb);
}
}
2. 实体类定义与自动建表
使用 Sugar 时,只需让实体类继承 SugarRecord,框架将自动根据字段生成对应数据库表结构。
public class User extends SugarRecord {
String name;
int age;
String email;
Date createdAt;
// 无参构造函数必须存在
public User() {}
public User(String name, int age, String email) {
this.name = name;
this.age = age;
this.email = email;
this.createdAt = new Date();
}
}
首次运行应用时,Sugar 会自动创建名为 user 的表,包含 name、age、email 和 created_at 字段,无需手动编写 CREATE TABLE 语句。
3. 基础数据操作示例
所有继承 SugarRecord 的类都内置了完整的 CRUD 方法:
- 插入:调用
save() - 查询:使用
SugarRecord.listAll()或find() - 更新:修改对象后再次调用
save() - 删除:调用
delete()
// 插入数据
User user = new User("张三", 28, "zhangsan@example.com");
user.save();
// 查询所有用户
List<User> users = User.listAll(User.class);
// 条件查询
List<User> adults = User.find(User.class, "age > ?", "18");
// 更新
User userToUpdate = User.findById(User.class, 1L);
userToUpdate.age = 29;
userToUpdate.save();
// 删除
userToDelete.delete();
4. 高级特性:自定义字段与索引
Sugar 支持通过注解增强字段行为:
@Column:自定义列名@Unique:设置唯一约束@Index:创建索引提升查询效率
public class Product extends SugarRecord {
@Column(name = "product_code")
String code;
@Unique
String serialNumber;
@Index
String category;
// 其他字段...
}
上述配置将在数据库中为 serialNumber 创建唯一索引,为 category 创建普通索引,优化高频查询性能。
5. 数据库迁移与版本控制
当实体类结构变更时(如新增字段),需在 AndroidManifest.xml 中升级数据库版本,Sugar 会自动执行迁移逻辑(仅支持添加字段,不支持删除或重命名)。
若需更复杂的迁移,可通过继承 SugarDb 并重写 onUpgrade() 方法实现自定义 SQL 脚本。