用途:辅助 Jimmer ORM 开发,主要面向 XiaomiAlbumSyncer 服务端,帮助编写实体映射代码、DTO 和 DSL 查询。
项目约定:服务端为 Solon + Kotlin + Jimmer,非 Spring;服务类用 @Managed 标记,依赖通过构造函数或 @Inject 注入。实体位于 server/src/main/kotlin/com/coooolfan/xiaomialbumsyncer/model/,DTO 位于 server/src/main/dto/<Entity>.dto,由 KSP 生成到 ...model.dto。查询入口是注入的 KSqlClient,项目习惯用 sql.executeQuery(Entity::class) { ... } / sql.executeDelete / sql.saveCommand(input, SaveMode.X),而非 createQuery(...).execute()。Controller 返回实体时用 companion 中的 Fetcher<T> 常量 + @FetchBy 固定投影,Service 接受 fetcher: Fetcher<T> 参数。修改实体或 DTO 后需执行 cd server && ./gradlew clean compileKotlin 验证 KSP 生成代码可编译。数据库表结构由 Flyway 迁移管理,新增字段需同步添加迁移脚本。
主要能力:提供实体定义(interface 而非 class,仅有 getter,编译期由 KSP 或 AnnotationProcessor 生成实现)、DSL 查询(强类型 SQL、编译时安全、动态谓词、动态表连接、隐式子查询)以及关键注解速查(@Entity、@MappedSuperclass、@Embeddable、@Id、@GeneratedValue、@Key、关联映射注解、@ManyToManyView、@IdView、@JoinColumn、@JoinTable、@Column、@Table、@Version、@LogicalDeleted、@Formula/@Transient)和命名约定(BookStore → BOOK_STORE、firstName → FIRST_NAME、store → STORE_ID)。
使用方式:定义实体时参考实体模板与映射文档,中间表含业务字段时定义中间实体并用 @ManyToManyView 暴露只读视图;需要按外键查询或写入时补充 @IdView。编写查询时优先用动态谓词(如 ilike?、between?、valueIn?),单值关联用动态表连接,集合关联用隐式子查询以避免重复与分页失效,API 返回实体时用 fetcher/DTO 控制投影。
适用场景与限制:适用于 Jimmer 实体、DTO、DSL 查询及 Solon 项目集成;若上下文指明 Jimmer 源码本地路径,应以源码实现为基准,否则可参考其代码仓库。Dart/Java 等非项目语言细节、具体部署与收费信息资料未提供。