首先,我从一个限定名和表开始:
Name myTableName = DSL.name("schema", "myTable");
Table<Record> myTable = DSL.table(myTableName);
然后我用模式映射构建上下文:
Configuration configuration = new DefaultConfiguration();
configuration.set(SQLDialect.HSQLDB);
Settings settings = new Settings()
.withRenderNameStyle(RenderNameStyle.QUOTED)
.withRenderSchema(true)
.withRenderMapping(
new RenderMapping()
.withSchemata(
new MappedSchema()
.withInput("schema")
.withOutput("PUBLIC")
)
);
configuration.set(settings);
return DSL.using(configuration);
然后构建一个SQL字符串来创建表:
context.createTable(myTable)....getSQL();
invalid schema name: schema in statement [create table "schema"."myTable"(
...
从更大的角度来看,我试图编写跨不同方言可移植的SQL,但我必须为其构建的每个环境都使用不同的模式。我试图在Java中抽象一个通用模式,然后可以使用jOOQ根据目标环境进行映射。
这是一个已知问题:https://github.com/jooq/jooq/issues/5344
从jOOQ 3.9.5开始,模式映射和表映射不应用于普通SQL表和自定义命名表。虽然不会有任何映射应用于普通SQL字符串,但后者在Jooq3.10中得到了修正。
有两种变通办法:
Name myTableName = DSL.name(schema(), "myTable");
public String schema() {
if (something)
return "schema";
else
return "PUBLIC";
}
public class BookRecord extends CustomRecord<BookRecord> {
protected BookRecord() {
super(BookTable.BOOK);
}
}
public class BookTable extends CustomTable<BookRecord> {
public static final BookTable BOOK = new BookTable();
public static final TableField<BookRecord, Short> ID
= createField("ID", SQLDataType.SMALLINT, BOOK);
public static final TableField<BookRecord, String> TITLE
= createField("TITLE", SQLDataType.VARCHAR, BOOK);
protected BookTable() {
super("BOOK", DSL.schema(DSL.name("schema")));
}
@Override
public Class<? extends BookRecord> getRecordType() {
return BookRecord.class;
}
}
下面是抽象类的代码: 现在,我应该如何为编写单元测试,并且应该如何在中模拟会话? 我在Stackoverflow上尝试了不同的解决方案,但仍然无法模拟它并获得会话模拟。
主要内容:介绍,实现,Shape.java,Rectangle.java,Square.java,Circle.java,Color.java,Red.java,Green.java,Blue.java,AbstractFactory.java,ShapeFactory.java,ColorFactory.java,FactoryProducer.java,AbstractFactoryPatternDemo.java抽象工厂模式(Abstract Factory Pattern)是围绕一个超级
抽象工厂模式 亦称: Abstract Factory 意图 抽象工厂模式是一种创建型设计模式, 它能创建一系列相关的对象, 而无需指定其具体类。 问题 假设你正在开发一款家具商店模拟器。 你的代码中包括一些类, 用于表示: 1、一系列相关产品, 例如 椅子Chair 、 沙发Sofa和 咖啡桌CoffeeTable 。 2、系列产品的不同变体。 例如, 你可以使用 现代Modern 、
抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。 介绍 意图:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 主要
简介 抽象工厂模式是一种软件开发设计模式。抽象工厂模式提供了一种方式,可以将一组具有同一主题的单独的工厂封装起来。在正常使用中,客户端程序需要创建抽象工厂的具体实现,然后使用抽象工厂作为接口来创建这一主题的具体对象。客户端程序不需要知道(或关心)它从这些内部的工厂方法中获得对象的具体类型,因为客户端程序仅使用这些对象的通用接口。抽象工厂模式将一组对象的实现细节与他们的一般使用分离开来。 简例 有个
抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。 介绍 意图:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 主要