首页
/ 【亲测免费】 Easy-Query 开源项目教程

【亲测免费】 Easy-Query 开源项目教程

2026-01-21 05:17:57作者:贡沫苏Truman

1. 项目介绍

1.1 项目概述

Easy-Query 是一个高性能、轻量级且多功能的 Java/Kotlin 对象查询 ORM 框架,支持数据库分片和读写分离。该项目致力于解决 JDBC 查询的复杂性,提供了强类型、轻量级和高性能的解决方案。Easy-Query 支持 OLTP 和 OLAP 查询,具备对象模型筛选、隐式子查询、隐式 JOIN 查询和任意格式拉取等功能。

1.2 主要特性

  • 高性能: 提供高效的查询和数据操作。
  • 轻量级: 依赖少,易于集成。
  • 多功能: 支持单表查询、多表查询、联合查询、子查询等。
  • 分片支持: 支持表分片和数据库分片。
  • 读写分离: 支持数据库的读写分离操作。

2. 项目快速启动

2.1 环境准备

  • JDK 8 或更高版本
  • Maven 或 Gradle
  • MySQL 或其他支持的数据库

2.2 添加依赖

pom.xml 中添加以下依赖:

<properties>
    <easy-query.version>last-version</easy-query.version>
</properties>

<dependency>
    <groupId>com.easy-query</groupId>
    <artifactId>sql-springboot-starter</artifactId>
    <version>${easy-query.version}</version>
</dependency>

2.3 配置数据源

application.properties 中配置数据源:

spring.datasource.url=jdbc:mysql://localhost:3306/easy-query-test
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

2.4 创建实体类

创建一个简单的实体类 Topic

@Data
@Table("t_topic")
@EntityProxy
public class Topic {
    @Column(primaryKey = true)
    private String id;
    private Integer stars;
    private String title;
    private LocalDateTime createTime;
}

2.5 编写查询代码

编写一个简单的查询示例:

public class TopicService {
    @Autowired
    private EasyEntityQuery easyEntityQuery;

    public Topic getTopicById(String id) {
        return easyEntityQuery
                .queryable(Topic.class)
                .where(o -> o.id().eq(id))
                .firstOrNull();
    }
}

3. 应用案例和最佳实践

3.1 单表查询

在实际应用中,单表查询是最常见的操作。以下是一个简单的单表查询示例:

Topic topic = easyEntityQuery
        .queryable(Topic.class)
        .where(o -> o.id().eq("3"))
        .firstOrNull();

3.2 多表查询

多表查询在复杂业务场景中非常常见。以下是一个多表查询的示例:

Topic topic = easyEntityQuery
        .queryable(Topic.class)
        .leftJoin(BlogEntity.class, (t, t1) -> t.id().eq(t1.id()))
        .where(o -> o.id().eq("3"))
        .firstOrNull();

3.3 分片查询

Easy-Query 支持表分片和数据库分片。以下是一个分片查询的示例:

LocalDateTime beginTime = LocalDateTime.of(2021, 1, 1, 1, 1);
LocalDateTime endTime = LocalDateTime.of(2021, 5, 2, 1, 1);

List<TopicShardingTime> list = easyQuery
        .queryable(TopicShardingTime.class)
        .where(o -> o.rangeClosed(TopicShardingTime::getCreateTime, beginTime, endTime))
        .orderByAsc(o -> o.column(TopicShardingTime::getCreateTime))
        .toList();

4. 典型生态项目

4.1 Spring Boot 集成

Easy-Query 可以与 Spring Boot 无缝集成,提供更加便捷的开发体验。通过 Spring Boot 的自动配置,可以快速启动和配置 Easy-Query。

4.2 Kotlin 支持

Easy-Query 不仅支持 Java,还提供了对 Kotlin 的全面支持。开发者可以使用 Kotlin 的特性来编写更加简洁和高效的代码。

4.3 数据库分片

Easy-Query 提供了强大的数据库分片功能,支持按时间、按范围等多种分片策略。开发者可以根据业务需求灵活配置分片规则。

4.4 读写分离

Easy-Query 支持数据库的读写分离,通过配置不同的数据源,可以实现读写操作的分离,提高系统的性能和可用性。

通过以上内容,您可以快速了解和使用 Easy-Query 开源项目,并根据实际需求进行扩展和优化。

登录后查看全文
热门项目推荐
相关项目推荐