我是JOOQ的新手,喜欢学习和使用它。
我正处于我想做一些测试的地步,而不是测试 在“真正的”数据库中,我想使用该数据库的“副本”。
当使用jdbc时,真正需要的是更改数据库名称 在连接数据库时创建语句并使用该名称。
我很快发现我试图写入测试数据库的任何内容 最终进入了生产数据库
在JOOQ文档中,看起来我可以通过一些映射来解决问题。
我添加了一个Settings类,并使用设置获取了DSLContext,如下所示
我的基础数据库名称是'kpi'。
Connection conn = JooqUtil.getConnection("user", "pw", kpitest, hostip, sb);
Settings settings = new Settings()
.withRenderMapping(new RenderMapping()
.withSchemata(
new MappedSchema().withInput(kpi)
.withOutput(kpitest)));
// Add the settings to the DSLContext
if (sb.length() == 0) {
dsl = DSL.using(conn, SQLDialect.MYSQL, settings);
}
以上导致看到正在使用的testName数据库, 但是对表和字段的访问是使用productionName。
回到文档看起来有一种映射表的方法 但它看起来很多工作。
进一步阅读,我使用schemata
在配置文件中找到了一些设置我当前的JOOQ配置xml文件包含
<inputSchema>kpi</inputSchema>
看起来我应该把它改成像
这样的东西<inputSchema></inputSchema> << maybe drop altogether
<schemata>
<schema>
<inputSchema>kpi</inputSchema>
<outputSchema>kpi</outputSchema>
</schema>
<schema>
<inputSchema>kpi</inputSchema>
<outputSchema>kpitest</outputSchema>
</schema>
</schemata>
在阅读手册时,我不确定DEV和PRODUCTION名称是否具有字面意义。
有一个(现实世界)示例,其中有一个生产和测试数据库, 或每个开发人员一个开发数据库,以及如何访问表和字段 如果语法有变化但是,对单元类型测试来说,语法的改变很难。
感谢您提供任何指导和示例链接