当前位置: 首页 > news >正文

如何快速上手Easy-Query:5分钟完成第一个数据库查询

如何快速上手Easy-Query:5分钟完成第一个数据库查询

【免费下载链接】easy-queryjava/kotlin high performance lightweight solution for jdbc query,support oltp and olap query,一款java下面支持强类型、轻量级、高性能的ORM,致力于解决jdbc查询,拥有对象模型筛选、隐式子查询、隐式join项目地址: https://gitcode.com/gh_mirrors/ea/easy-query

想要在Java项目中快速实现数据库操作,但又不想被繁琐的SQL语句和复杂的ORM配置困扰?😊 Easy-Query正是你需要的解决方案!这是一款专为Java/Kotlin开发者设计的高性能、轻量级ORM框架,支持强类型查询和隐式关联,让你在5分钟内就能完成第一个数据库查询操作。本文将为你提供完整的Easy-Query快速入门指南,帮助你轻松上手这个强大的数据库查询工具。

🚀 Easy-Query是什么?

Easy-Query是一款Java/Kotlin高性能轻量级JDBC查询解决方案,它支持OLTP和OLAP查询,致力于解决传统JDBC查询的痛点。通过强大的类型安全查询API和隐式关联特性,Easy-Query让数据库操作变得简单直观,同时保持极高的性能表现。

核心优势速览

  • 强类型查询:编译时检查,避免运行时错误
  • 隐式关联:自动处理表关联,无需手动写JOIN
  • 高性能:轻量级设计,查询效率极高
  • 多数据库支持:MySQL、PostgreSQL、Oracle等主流数据库
  • 简洁API:链式调用,代码可读性强

📦 快速安装与配置

1. 添加Maven依赖

在你的Spring Boot项目中,只需添加以下依赖即可开始使用Easy-Query:

<properties> <easy-query.version>最新版本</easy-query.version> </properties> <dependency> <groupId>com.easy-query</groupId> <artifactId>sql-springboot-starter</artifactId> <version>${easy-query.version}</version> </dependency> <dependency> <groupId>com.easy-query</groupId> <artifactId>sql-mysql</artifactId> <version>${easy-query.version}</version> </dependency>

2. 配置数据源

application.yml中配置数据库连接:

spring: datasource: url: jdbc:mysql://localhost:3306/your_database username: root password: your_password driver-class-name: com.mysql.cj.jdbc.Driver

🏃‍♂️ 5分钟完成第一个查询

步骤1:定义实体类

首先创建一个简单的博客实体类:

@Data @Table("t_blog") @EntityProxy public class BlogEntity { @Column(primaryKey = true) private String id; private String title; private String content; private Integer star; private LocalDateTime createTime; private Boolean deleted; }

步骤2:编写第一个查询

现在让我们用Easy-Query实现一个简单的查询:

@Service public class BlogService { @Autowired private EasyEntityQuery easyEntityQuery; public List<BlogEntity> findPopularBlogs() { return easyEntityQuery.queryable(BlogEntity.class) .where(blog -> blog.star().gt(100)) .orderByDesc(blog -> blog.createTime()) .limit(10) .toList(); } }

步骤3:查看生成的SQL

上面的代码会自动生成以下SQL语句:

SELECT t.`id`, t.`title`, t.`content`, t.`star`, t.`create_time` FROM `t_blog` t WHERE t.`deleted` = false AND t.`star` > 100 ORDER BY t.`create_time` DESC LIMIT 10

看!就是这么简单!🚀 你已经完成了第一个Easy-Query查询操作。

🔥 五大隐式特性详解

Easy-Query最强大的功能之一就是它的隐式特性,让复杂查询变得异常简单:

1. 隐式JOIN查询

无需手动写JOIN语句,自动处理表关联:

// 查询属于"XX公司"的用户 List<SysUser> users = entityQuery.queryable(SysUser.class) .where(user -> user.company().name().like("XX公司")) .orderBy(user -> user.company().registerMoney().desc()) .toList();

2. 隐式子查询

自动处理一对多关系的子查询:

// 查询包含"小明"用户的企业 List<Company> companies = entityQuery.queryable(Company.class) .where(company -> company.users().any(u -> u.name().like("小明"))) .toList();

3. 隐式分组查询

优化多个子查询,合并为高效的分组查询:

List<Company> companies = entityQuery.queryable(Company.class) .subQueryToGroupJoin(company -> company.users()) .where(company -> { company.users().any(u -> u.name().like("小明")); company.users().max(u -> u.birthday()).gt(LocalDateTime.now()); }).toList();

📊 完整CRUD操作示例

查询操作

// 单表查询 Topic topic = easyEntityQuery.queryable(Topic.class) .where(o -> o.id().eq("3")) .firstOrNull(); // 多表关联查询 Topic topic = entityQuery.queryable(Topic.class) .leftJoin(BlogEntity.class, (t, b) -> t.id().eq(b.id())) .where(o -> o.id().eq("3")) .firstOrNull(); // 分页查询 EasyPageResult<BlogEntity> page = easyEntityQuery.queryable(BlogEntity.class) .where(b -> b.content().like("技术")) .orderByDesc(b -> b.createTime()) .toPageResult(1, 20);

插入操作

Topic topic = new Topic(); topic.setId("1"); topic.setStars(100); topic.setTitle("Easy-Query入门"); topic.setCreateTime(LocalDateTime.now()); long rows = easyEntityQuery.insertable(topic).executeRows();

更新操作

// 实体更新 Topic topic = easyEntityQuery.queryable(Topic.class) .where(o -> o.id().eq("7")) .firstNotNull("未找到数据"); topic.setTitle("更新后的标题"); long rows = easyEntityQuery.updatable(topic).executeRows(); // 表达式更新 long rows = easyEntityQuery.updatable(Topic.class) .setColumns(o -> o.stars().set(12)) .where(o -> o.id().eq("2")) .executeRows();

删除操作

// 条件删除 long rows = easyQuery.deletable(Topic.class) .where(o -> o.title().eq("标题998")) .executeRows(); // 实体删除 Topic topic = easyQuery.queryable(Topic.class) .whereId("997") .firstNotNull("未找到数据"); long rows = easyQuery.deletable(topic).executeRows();

🏗️ 高级功能一览

动态表名支持

easyEntityQuery.queryable(BlogEntity.class) .asTable(a -> "aa_bb_cc") // 动态指定表名 .where(o -> o.id().eq("123")) .toList();

UNION查询

Queryable<Topic> q1 = easyQuery.queryable(Topic.class); Queryable<Topic> q2 = easyQuery.queryable(Topic.class); Queryable<Topic> q3 = easyQuery.queryable(Topic.class); List<Topic> list = q1.union(q2, q3) .where(o -> o.id().eq("123321")) .toList();

子查询支持

// IN子查询 EntityQueryable<StringProxy, String> idQuery = easyEntityQuery.queryable(BlogEntity.class) .where(o -> o.id().eq("1")) .select(o -> new StringProxy(o.id())); List<Topic> list = easyEntityQuery.queryable(Topic.class) .where(o -> o.id().in(idQuery)) .toList(); // EXISTS子查询 List<Topic> list = easyEntityQuery.queryable(Topic.class) .where(o -> o.exists(() -> easyEntityQuery.queryable(BlogEntity.class) .where(q -> q.id().eq(o.id())) )).toList();

🗄️ 支持的数据库

Easy-Query支持多种主流数据库,让你的项目迁移无忧:

数据库包名Spring Boot配置
MySQLsql-mysqlmysql
PostgreSQLsql-pgsqlpgsql
Oraclesql-oracleoracle
SQL Serversql-mssqlmssql
H2sql-h2h2
SQLitesql-sqlitesqlite
ClickHousesql-clickhouseclickhouse
达梦数据库sql-damengdameng
人大金仓sql-kingbase-eskingbase_es

🎯 最佳实践建议

1. 使用实体代理

为实体类添加@EntityProxy注解,让Easy-Query自动生成代理类,获得更好的类型安全和IDE支持。

2. 合理使用隐式特性

充分利用五大隐式特性(隐式JOIN、隐式子查询等),减少手动编写复杂SQL的工作量。

3. 分页优化

对于大数据量的分页查询,建议使用toPageResult方法,它会自动优化分页查询性能。

4. 逻辑删除

Easy-Query内置逻辑删除支持,只需在实体字段上添加@LogicDelete注解即可。

@LogicDelete(strategy = LogicDeleteStrategyEnum.BOOLEAN) private Boolean deleted;

🚨 常见问题解答

Q: Easy-Query适合什么场景?

A: Easy-Query特别适合需要复杂查询、多表关联、分库分表的Java/Kotlin项目。它既适合中小型项目快速开发,也适合大型企业级应用。

Q: 性能如何?

A: Easy-Query采用轻量级设计,生成的SQL语句经过优化,性能接近原生JDBC,同时提供了类型安全和便捷的API。

Q: 学习曲线陡峭吗?

A: 不陡峭!如果你熟悉Lambda表达式和链式调用,基本上30分钟就能掌握基本用法。本文的5分钟入门就是一个很好的证明!

Q: 支持事务吗?

A: 支持!Easy-Query完全兼容Spring的事务管理,可以与其他框架无缝集成。

📈 进阶学习路径

  1. 基础掌握:单表CRUD → 多表关联 → 复杂查询
  2. 高级特性:隐式关联 → 分库分表 → 读写分离
  3. 性能优化:查询优化 → 索引建议 → 缓存策略
  4. 源码学习:代理机制 → SQL生成 → 扩展开发

🎉 开始你的Easy-Query之旅

现在你已经掌握了Easy-Query的核心概念和基本用法。只需5分钟,你就能在自己的项目中完成第一个数据库查询!✨

记住,Easy-Query的设计哲学是"简单不简单"——让简单的操作保持简单,让复杂的操作变得可能。无论你是刚接触ORM的新手,还是经验丰富的开发者,Easy-Query都能为你提供极佳的开发体验。

立即行动:克隆项目仓库开始体验吧!

git clone https://gitcode.com/gh_mirrors/ea/easy-query

开始享受类型安全、高性能的数据库操作体验吧!🚀 如果你在学习和使用过程中遇到任何问题,欢迎查阅官方文档或加入社区讨论。

提示:更多详细配置和高级用法,请参考项目中的sql-springboot-starter模块和官方文档。

【免费下载链接】easy-queryjava/kotlin high performance lightweight solution for jdbc query,support oltp and olap query,一款java下面支持强类型、轻量级、高性能的ORM,致力于解决jdbc查询,拥有对象模型筛选、隐式子查询、隐式join项目地址: https://gitcode.com/gh_mirrors/ea/easy-query

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

http://www.jsqmd.com/news/1201830/

相关文章:

  • 如何在React应用中快速集成React Komposer:5个实用示例
  • 企业级Figma-Context-MCP离线部署架构设计:3种高性能方案深度解析
  • 二七本地直营回收门店,闲置名表金条免费上门估价,行情透明公开 - 全城热点
  • Rainbow-delimiters与Emacs主题集成:完美适配Solarized、Zenburn等主题
  • AutoAgent完整指南:零代码构建智能AI代理的实战教程
  • 重庆上门回收包包有哪些猫腻,本地人真实卖包经验分享 - 每日生活报
  • 4GB显存也能流畅运行SDXL?Fooocus低配置优化全解析
  • 2026南京名表回收拒绝经验主义,每块腕表均按标准流程鉴定 - 禹竞奢收行
  • 宁波包包换现金,实体门店即时付 - 大牌深度测评
  • 英语风采大赛投票小程序制作教程,学生风采评选操作干货 - 投票评选活动
  • 多数据库统一管理挑战的架构级解决方案:MCP Toolbox配置深度解析
  • 百度拟年内完成港股双重主要上市转换 搭建港美双独立上市架构
  • Scrapling智能爬虫框架:让数据采集变得像呼吸一样自然 [特殊字符]️
  • Video++跨平台开发指南:在Linux、Windows和macOS上的部署
  • AI开发中的Skill技术:标准化与自动化实践
  • AI 推理服务优雅下线:Drain 状态与等待中的请求处理
  • 2026 武汉中考落榜女生首选卫校 湖北现代科技学校护理招生条件 - 湖北找学校
  • 计算机毕业设计之基于SpringCloud的客服管理平台的设计与实现
  • OpenHuFu安全多方计算:秘密共享与差分隐私技术应用
  • AI [Unable to reach the model provider]
  • Elasticsearch RTF终极指南:中文优化的企业级搜索发行版
  • 2026年五大数据建模工具横评 - 科技焦点
  • Warp终端护眼指南:3步打造舒适高效的开发者视觉环境
  • ssm基于SSM的在线预约导游系统
  • 2026铜陵中考升学: 铜陵学子新选择!合肥理工【3+2中高职贯通班】,五年拿统招全日制大专文凭! - 最新资讯
  • 【架构实战】数据加密:敏感数据的存储与传输保护
  • 模型版本管理架构:每次上线不只是换一个权重文件
  • AgentForge未来路线图:MCP标准与新一代工具系统深度解析
  • 打造你的个性化数字伙伴:DyberPet桌面宠物框架深度解析
  • 2026广州闲置钻戒变现实用攻略,同城上门鉴定全程录像更安心 - 禹竞奢收行