From de8fc0256f9cf9d37530d12d0d283734ccc8575c Mon Sep 17 00:00:00 2001 From: alex Date: Wed, 3 Jul 2024 16:08:22 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0query=20factory?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mongodb/db/query/MongodbQueryFactory.kt | 23 +++++++++++++++++++ .../synebula/gaea/db/query/IQueryFactory.kt | 17 ++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 src/gaea.mongodb/src/main/kotlin/com/synebula/gaea/mongodb/db/query/MongodbQueryFactory.kt create mode 100644 src/gaea/src/main/kotlin/com/synebula/gaea/db/query/IQueryFactory.kt diff --git a/src/gaea.mongodb/src/main/kotlin/com/synebula/gaea/mongodb/db/query/MongodbQueryFactory.kt b/src/gaea.mongodb/src/main/kotlin/com/synebula/gaea/mongodb/db/query/MongodbQueryFactory.kt new file mode 100644 index 0000000..46bd394 --- /dev/null +++ b/src/gaea.mongodb/src/main/kotlin/com/synebula/gaea/mongodb/db/query/MongodbQueryFactory.kt @@ -0,0 +1,23 @@ +package com.synebula.gaea.mongodb.db.query + +import com.synebula.gaea.db.query.IQuery +import com.synebula.gaea.db.query.IQueryFactory +import org.springframework.data.mongodb.core.MongoTemplate + +class MongodbQueryFactory(var template: MongoTemplate) : IQueryFactory { + + /** + * 创建IQuery接口类型 + */ + override fun createRawQuery(clazz: Class<*>): IQuery<*, *> { + val constructor = MongodbQuery::class.java.getConstructor(Class::class.java, MongoTemplate::class.java) + return constructor.newInstance(clazz, this.template) + } + + /** + * 创建IQuery接口类型 + */ + override fun createQuery(clazz: Class): IQuery { + return MongodbQuery(clazz, template) + } +} \ No newline at end of file diff --git a/src/gaea/src/main/kotlin/com/synebula/gaea/db/query/IQueryFactory.kt b/src/gaea/src/main/kotlin/com/synebula/gaea/db/query/IQueryFactory.kt new file mode 100644 index 0000000..2535316 --- /dev/null +++ b/src/gaea/src/main/kotlin/com/synebula/gaea/db/query/IQueryFactory.kt @@ -0,0 +1,17 @@ +package com.synebula.gaea.db.query + +/** + * Query 工厂接口。 定义了Query的创建方法。 + */ +interface IQueryFactory { + + /** + * 创建原始类型的IQuery接口类型 + */ + fun createRawQuery(clazz: Class<*>): IQuery<*, *> + + /** + * 创建指定类型的IQuery接口类型 + */ + fun createQuery(clazz: Class): IQuery +} \ No newline at end of file