作者介绍
前言
ORM又叫对象关系映射,一款好的ORM不仅仅是支持OM更重要的是把R合理的利用起来easy-query就是一款支持对象关系和SQL表达式的现代化ORM.
EasyQuery介绍
EasyQuery是一款Java下面的现代化ORM,拥有强类型、轻量级、高性能特点,致力于解决jdbc查询,支持对象模型关系筛选,隐式查询,纯SQL表达式查询。
框架支持java8及以上版本完全无依赖干净,支持分库分表、字段加密、联级筛选、逻辑删除、多租户、动态表名、无实体CRUD、计算属性、乐观锁、批处理、数据追踪差异更新等一系列功能,并且给予用户极大地扩展和方言自定义功能扩展。
背景
使用现有orm中你是否有以下痛点呢?
1.orm使用都是字符串不易维护,ide无法智能提示
2.orm不支持join或者多表join功能偏弱无法满足group+join 子查询或者from 子查询等情况
3.orm模型联级筛选对象关系过弱,仅支持一对多一对一等的拉取,不支持筛选过滤
4.没有统一的函数来支持映射翻译到所有的数据库
5.orm功能薄弱想支撑业务需要添加各种外部组件来满足业务
6.orm无法和现有pojo体系完美融合兼容
7.不支持分库分表需要额外引入sharding来支持
如果你有以上痛点,那么easy-query获取能够帮助到你。
使用easy-query可以为开发者带来什么?
1.简单易用高效的api,流式书写带来的便捷性和易维护性,拒绝魔法值
2.强类型只能提示哪怕你是刚入门小白也能在idea的提示下很容易写出想要的代码
3.复杂多表join,子查询,exists面对各种复杂业务场景再也不用担心需要额外引入组件了
4.模型关系查询将ORM的R体现的淋漓尽致,不仅仅是简单的查询出结果更能完美的进行对象模型筛选,犹如stream查询数据库一样可以以any,none等方法断言和我相关的数据
5.结构化DTO任意拉取,可以在用户创建各个模型关系后快速拉去任意结构的对象转成json,不用再烦恼一对一、多对一、一对多、多对多在分页下的获取了
6.完美杜绝n+1带来的性能问题
7.所有功能完全免费永久开源,并且作者自行编写idea插件帮助大家提高效率happy code
实际业务案例
系统的用户架构一般是用户角色(多对多),用户企业多对1,角色菜单多对多
用户筛选
一对一隐式join
因为用户和企业是多对一的关系所以可以在筛选用户的时候利用对象关系以企业为条件进行筛选从而自动进行join
一对多隐式子查询
当我们在用户对象里面创建好企业关系可以在筛选用户时使用企业作为条件,反之我们在企业模型里面创建好企业和用户的关系我们在筛选企业的时候一样可以使用用户作为条件帮我们快速实现筛选
多表显式join
直接获取用户拥有的菜单
用户和菜单并没有直接关系中间和角色表是多对多中间还有两张表user_role和role_menu表
返回用户结构附带角色
返回结果
隐式查询获取匿名结果
有时候我们需要在上文获取中间结果便于java内部计算,大部分orm在这个时候只支持返回map对象,这样会导致在使用时会遍布字符串并且具体类型也会丢失导致使用起来非常不方便
结构化DTO
很多时候我们在访问响应时需要返回自定义的数据结构,而不是整个数据库结构
所以我们这边使用easy-query插件来快速实现构建结构化DTO响应
最终会生成如下dto
函数翻译
如果您对此框架有兴趣那么欢迎您的尝试,也欢迎您的意见建议,框架拥有太多的功能无法在这里意义展示,更多的功能可以访问 github仓库 或gitee仓库 进行查阅
最后
easy-qeury很高兴加入dromara这个组织希望可以再组织下茁壮成长,为java开源贡献一份自己的微弱力量
最后附上项目地址欢迎大家加入star提交pr issue
github仓库 https://github.com/dromara/easy-query
gitee仓库 https://gitee.com/dromara/easy-query
未经允许不得转载:岩猫星空网 » 欢迎现代化 Java Orm Easy-Query 加入 Dromara 开源社区