Closed langbiantianya closed 5 months ago
项目是基于ktor搭建的di使用的koin并没有使用spring,依赖配置使用文档中的gradle插件配置
plugins { kotlin("jvm") version "1.9.23" id("io.ktor.plugin") version "2.3.9" id("org.jetbrains.kotlin.plugin.serialization") version "1.9.23" // 从 Gradle 7.0 开始,可以使用 "latest.release" 代替具体的版本号,代表使用最新版本 id("tech.argonariod.gradle-plugin-jimmer") version "latest.release" // 也可以使用 '+' 字符代表从 '+' 字符开始匹配最新的版本号 // 添加ksp插件 id("com.google.devtools.ksp") version "1.9.23+" } jimmer { // 设定 jimmer 依赖版本,此处也可以使用 "latest.release" 或 "0.+" 等版本范围表达式 version = "latest.release" ormCompileOnly = true language = JimmerLanguage.KOTLIN client { enableEmbeddedSwaggerUi = true checkedException = true } }
KSqlClient是这样创建的
val databases = module { single<HikariDataSource> { val hikariConf = get<Config>().hikari HikariDataSource().apply { username = hikariConf.username password = hikariConf.password jdbcUrl = hikariConf.jdbcUrl driverClassName = hikariConf.driverClassName isAutoCommit = hikariConf.isAutoCommit transactionIsolation = hikariConf.transactionIsolation validate() } } single<ConnectionManager> { ConnectionManager.simpleConnectionManager(get<HikariDataSource>()) } single<KSqlClient> { newKSqlClient { setTriggerType(TriggerType.BOTH) setConnectionManager(get<ConnectionManager>()) } } }
实体类全部按照快速上手写的 调用的代码是这样的
import com.kxxnzstdsw.entity.* import com.kxxnzstdsw.enums.Gender import org.babyfish.jimmer.Page import org.babyfish.jimmer.sql.fetcher.Fetcher import org.babyfish.jimmer.sql.kt.KSqlClient import org.babyfish.jimmer.sql.kt.ast.expression.`between?` import org.babyfish.jimmer.sql.kt.ast.expression.`eq?` import org.babyfish.jimmer.sql.kt.ast.expression.`ilike?` import org.babyfish.jimmer.sql.kt.ast.expression.or import java.math.BigDecimal class BookRepository(override val sqlClient: KSqlClient) : BasicRepository { fun findBooks( pageIndex: Int, // 从0开始 pageSize: Int = 10, fetcher: Fetcher<Book>? = null, sortCode: String = "name asc, edition desc", name: String? = null, minPrice: BigDecimal? = null, maxPrice: BigDecimal? = null, storeName: String? = null, storeWebsite: String? = null, authorName: String? = null, authorGender: Gender? = null ): Page<Book> = sqlClient .createQuery(Book::class) { where(table.name `ilike?` name) where(table.price.`between?`(minPrice, maxPrice)) where(table.store.name `ilike?` storeName) where(table.store.website `ilike?` storeWebsite) where += table.authors { or( firstName `ilike?` authorName, lastName `ilike?` authorName ) } where += table.authors { gender `eq?` authorGender } } .orderBy(table.makeOrders(sortCode)) .select( table.fetch(fetcher) ) .fetchPage(pageIndex, pageSize) }
出现的问题如下图,我自己也翻了下源码但是能力有限找不到可以转换的方法
文档有细微错误,请把orderBy和select搬到花括弧内部。
thanks
项目是基于ktor搭建的di使用的koin并没有使用spring,依赖配置使用文档中的gradle插件配置
KSqlClient是这样创建的
实体类全部按照快速上手写的 调用的代码是这样的
出现的问题如下图,我自己也翻了下源码但是能力有限找不到可以转换的方法