Dynamic-SQL2 是一个 纯 Java 、低侵入、跨数据库、可组合的动态 SQL 构建框架。 它提供 优雅的 DSL 风格 API ,让你可以像写代码一样构建 SQL ,同时保持 SQL 的表达力与可控性。
它不是完整的 ORM ,也不是 MyBatis 的替代品,而是定义为 Lightweight ORM / Micro ORM:
补足传统 ORM 在“动态 SQL + 多表查询 + 跨库兼容 + 类型检查”上的空白和拓展。
适用于 企业级业务系统、SaaS 平台、多租户架构、复杂动态查询场景。
核心特性:
1
a0210077 5 小时 13 分钟前
轮子不错,但企业级一般用完整的稳定的 ORM 框架,暂时还没想到特别合适的应用场景。
|
2
Jackysunhp 4 小时 28 分钟前
让我想到了 ES 的 DSL 语句转 SDK ,对于看 sql 的时候不直观, 捞 sql 定位问题不是很方便吧。
|
5
dcsuibian 4 小时 0 分钟前
感觉,有点像 jOOQ 啊
|
6
bojue 3 小时 15 分钟前
@a0210077 #4 我知道 op 的意思,我看你说到了应用场景刚好我们搞过,现在客户基本上还是以整体方案为主,单点方案得话要 op 给用户讲清楚就行,罗列功能吸引力不大了,尤其现在有 ai
|
7
ikas 1 小时 35 分钟前
看了首页的例子.没有看到怎么根据参数动态加条件的?
比如我们用的: public interface PetDao { @SelectProvider(type = PetMapperSql.class) List<Pet> queryPet(@Param("param") PetQueryParam param); } public class PetMapperSql extends BaseMapperSql { public SelectModel queryPet(@Param("param") PetQueryParam param) { return select(Pet.id, Pet.name, Pet.petType, Pet.birthday, Pet.updateTime) .from(Pet) .where().and(Pet.name, isLikeWhenPresent(param.getName()).then(x -> "%" + x + "%")) .and(Pet.birthday, isGreaterThan(param.getBirthdayStart()).when(Objects::nonNull)) .and(Pet.birthday, isLessThanWhenPresent(param.getBirthdayEnd())) .build(); } } .and(Pet.birthday, isGreaterThan(param.getBirthdayStart()).when(Objects::nonNull)) |
8
xuld 1 小时 23 分钟前
初步看了下,和我的想法比较接近,有没有群可以深度交流下
|
9
micean 1 小时 9 分钟前
这种有 jOOQ 就已经够了,稍微复杂一点脑子里还得转一遍 SQL 。
如果能整一个嵌套 dsl 转 sql ,查询结果直接返回 json 还差不多,jimmer 实现的我觉得还不够完美友好 |