Replies: 2 comments 3 replies
-
不能,jimmer有一个设计目标,100%强类型,不会引入基于字符串的动态匹配。 |
Beta Was this translation helpful? Give feedback.
-
很深的table join和sub query没法用这种方法描述。 正是因为这种方法用于描述单表,无法动态查询针对多表,所以并未采用这种为单表设计的表达方式。 如果不想用DTO语言的Specification DTO实现复杂动态查询,直接使用DSL,以kotlin为例
DSL写法是静态的,单里面的每个predicate都是动态的,predicate的有无自动控制table join或sub query的舍弃(如果更复杂的场景,多个条件都成立,table join或subquery重复了,也可以自动合并) 可见,jimmer本身的DSL为动态查询设计,而且包含table join或sub query的(多表动态查询),已经足够简单。 specification DTO仅仅为了方便人们把API暴露和SQL逻辑二合一。事实上,即便不用specification DTO,也简单到极致,无法再简化了。 Jimmer任何功能(查询返回,数据保存,和条件匹配)立足点都是多表系统和任意形状的的数据结构。没有任何一个功能为单表操作这种简单目的。所以,Jimmer不会提供任何有单表倾向的API。 有趣的是,Jimmer下做任意复杂的多表操作,都比其他ORM处理单表简单的多。 |
Beta Was this translation helpful? Give feedback.
-
现在的QBE查询很强大,是否可以参考jhipster的过滤字段的功能https://www.jhipster.tech/entities-filtering/,通过定义几种类型的Filter,如Filter field1、Filter field2,这样field1就自动支持了eq、ne、gt、lt等查询,field2自动支持eq、ne、like等查询,这样就不需要对field做alias,可以跟原属性名保持一致
Beta Was this translation helpful? Give feedback.
All reactions