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