当前位置:首页 > 技术 > 正文内容

Sugar:简化 Android 数据库操作的轻量级 ORM 框架

访客 技术 2026年8月22日 1

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 的表,包含 nameageemailcreated_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 脚本。

标签: Androidorm

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。