requery入门指南:5分钟快速掌握Java/Kotlin跨平台数据库查询

requery入门指南:5分钟快速掌握Java/Kotlin跨平台数据库查询

【免费下载链接】requery requery/requery: 是一个用于 SQL.NET 数据库的跨平台查询库,它支持多种数据库,包括 SQLite、Microsoft SQL Server、MySQL 等。适合用于在多种平台上进行数据库查询和操作,特别是对于需要跨平台查询和操作的场景。特点是跨平台、易于使用、支持多种数据库。 【免费下载链接】requery 项目地址: https://gitcode.com/gh_mirrors/re/requery

requery是一个轻量级但功能强大的对象映射和SQL生成库,专为Java/Kotlin/Android设计,支持RxJava和Java 8特性。它让开发者能够轻松地映射或创建数据库,在任何使用Java的平台上执行查询和更新操作,是跨平台数据库查询的理想选择。

🚀 为什么选择requery?

requery具有以下核心优势,使其在众多数据库工具中脱颖而出:

🌟 零反射机制

requery采用编译时注解处理生成实体模型类和映射属性,避免了运行时反射带来的性能损耗。在Android平台上,其查询性能几乎与使用标准Cursor和ContentValues API相当。

💻 跨平台支持

无论是传统Java应用、Kotlin项目还是Android开发,requery都能无缝适配。它支持多种数据库,包括PostgresSQL、MySQL、Oracle、SQL Server、SQLite等主流数据库。

📱 Android友好

专为Android平台优化,提供了与RecyclerView、Databinding和SQLCipher的集成支持。示例项目可参考requery-android/example

🚀 非阻塞API

支持Java 8 Streams和RxJava Observables,轻松实现响应式编程,满足现代应用对异步操作的需求。

📦 快速开始

1️⃣ 环境准备

首先,克隆项目仓库:

git clone https://gitcode.com/gh_mirrors/re/requery

2️⃣ 添加依赖

在Gradle项目中添加以下依赖:

repositories {
    jcenter()
}

dependencies {
    compile 'io.requery:requery:1.6.1'
    compile 'io.requery:requery-android:1.6.1' // Android平台
    annotationProcessor 'io.requery:requery-processor:1.6.1'
}

3️⃣ 定义实体

requery支持多种实体定义方式,包括抽象类、接口和不可变类型。

使用抽象类定义实体:

@Entity
abstract class AbstractPerson {
    @Key @Generated
    int id;
    
    @Index("name_index")
    String name;
    
    @OneToMany
    Set<Phone> phoneNumbers;
    
    @Converter(EmailToStringConverter.class)
    Email email;
    
    @PostLoad
    void afterLoad() {
        updatePeopleList();
    }
}

使用接口定义实体:

@Entity
public interface Person {
    @Key @Generated
    int getId();
    
    String getName();
    
    @OneToMany
    Set<Phone> getPhoneNumbers();
    
    String getEmail();
}

4️⃣ 执行查询

requery提供了类型安全的查询DSL,让查询操作变得简单直观。

Java查询示例:

Result<Person> query = data
    .select(Person.class)
    .where(Person.NAME.lower().like("b%")).and(Person.AGE.gt(20))
    .orderBy(Person.AGE.desc())
    .limit(5)
    .get();

Kotlin查询示例:

data {
    val result = select(Person::class) where (Person::age gt 21) and (Person::name eq "Bob") limit 10
}

5️⃣ 响应式查询

requery无缝集成RxJava,支持响应式查询:

Observable<Person> observable = data
    .select(Person.class)
    .orderBy(Person.AGE.desc())
    .get()
    .observable();

📚 核心功能

🔄 关系映射

requery支持一对一、一对多、多对一和多对多关系,通过注解轻松定义:

@Entity
abstract class AbstractPerson {
    @Key @Generated
    int id;
    
    @ManyToMany
    Result<Group> groups;
}

⚡ Java 8特性支持

充分利用Java 8的Stream和Optional特性:

data.select(Person.class)
    .orderBy(Person.AGE.desc())
    .get()
    .stream().forEach(System.out::println);
public interface Person {
    @Key @Generated
    int getId();
    
    String getName();
    Optional<String> getEmail();
    ZonedDateTime getBirthday();
}

🔄 Upsert支持

requery会根据不同数据库生成相应的upsert语句,简化数据插入更新操作:

  • Oracle/SQL Server/HSQL: merge into when matched/not matched
  • PostgresSQL: on conflict do update (9.5+)
  • MySQL: on duplicate key update

🎯 适用场景

requery适用于各种需要跨平台数据库操作的场景:

  • 移动应用开发(Android)
  • 企业级Java应用
  • Kotlin后端服务
  • 响应式应用开发

📖 学习资源

通过以上步骤,你已经掌握了requery的基本使用方法。这个强大的库将帮助你更高效地处理跨平台数据库查询任务,提升开发效率。现在就开始尝试使用requery,体验它带来的便捷与强大吧!

【免费下载链接】requery requery/requery: 是一个用于 SQL.NET 数据库的跨平台查询库,它支持多种数据库,包括 SQLite、Microsoft SQL Server、MySQL 等。适合用于在多种平台上进行数据库查询和操作,特别是对于需要跨平台查询和操作的场景。特点是跨平台、易于使用、支持多种数据库。 【免费下载链接】requery 项目地址: https://gitcode.com/gh_mirrors/re/requery

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值