java - MyBatis 生成器中的私有(private)同义词

标签 java mybatis mybatis-generator

我正在使用 Mybatis 生成器生成对象。我能够在该模式中生成具有实际表名的类。但授予该表上不同模式的选择权限并创建了一个私有(private)同义词。我想使用该同义词生成对象。

<table tableName="PrivateSynonym" domainObjectName="PrivateSynonym"  enableCountByExample="true" enableUpdateByExample="true" enableDeleteByExample="true" enableSelectByExample="true" selectByExampleQueryId="true" modelType="flat">

    <property name="useActualColumnNames" value="true" />
   </table>

我尝试了上面的例子,但没有成功。它说没有与 PrivateSynonym 映射的表。是否可以使用同义词来生成对象?非常感谢对此的任何帮助。

最佳答案

从同义词生成的能力取决于 JDBC 驱动程序,但它不起作用我并不感到惊讶。生成器使用 DatabaseMetaData.getColumns() 方法来了解表,因此大多数驱动程序在命令中忽略同义词也就不足为奇了。

该问题的解决方案是基于表生成代码,但将运行时名称更改为其他名称。您可以使用特权 ID 来生成代码,但在生成的代码中使用同义词,这样用户就不需要特权 ID。例如:

<table tableName="PrivateTable" schema="PrivateSchema">
  <property name="runtimeTableName" value="PublicSynonym"/>
  <property name="runtimeSchema" value="PublicSchema"/>
</table>

关于java - MyBatis 生成器中的私有(private)同义词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61451247/

相关文章:

java - 如何在JNA中填充结构体数组?

java - 使用 Jackson 根据 API 版本指定不同的 JSON 属性名称

java - 在谷歌地图中为我的位置按钮设置自定义 View

java - 如何将 DataProvider 与 Apache POI 结合使用

java - 每个添加的 DAO 接口(interface)都以指数方式增加启动时间(Spring 初始化)

java - 如果使用spring注入(inject)mapper,mybatis session 什么时候打开?

mysql - 使用 JDBC 在 MyBatis 中回滚(无 Spring,无容器)

java - 如何在 mybatis_dynamic_sql 中为 TO_CHAR(USE_BY_DATE - ? ,'YYYYMMDD' ) >=TRUNC(SYSDATE) 创建查询

java - 第一次 myBatis 生成器获得大量 "cannot be resolved to a type"后

Mybatis 生成器 : How to generate all tables for a specified schema