不用看其它博客了,看这个就完事了,其它博客一个抄一个,全是错的。有可能是 mybatis-generator 迭代导致的,也有可能是根本自己没试过,就是个错的。
mybatis-generator 怎么用我就不再说了,网上一大堆,现在说说以下这段配置,为什么生成的表,表名两边还是没有 `` 字符包裹。
<property name="javaFileEncoding" value="UTF-8"/> <property name="autoDelimitKeywords" value="true"/> <property name="beginningDelimiter" value="`"/> <property name="endingDelimiter" value="`"/>
如果只想知道结果的,我这里可以告诉你们,在 <table> 标签中加一个参数就可以了,先列答案。
<table tableName="ABC" domainObjectName="ABC" enableSelectByPrimaryKey="true" enableSelectByExample="true" enableUpdateByPrimaryKey="true" enableInsert="true" enableUpdateByExample="true" enableCountByExample="true" delimitIdentifiers="true"> </table>
这样就解决问题了,多设置一个 delimitIdentifiers 参数就行了。只拿结果的到这里就不用看了。
以下说说为什么。
首先我们找一下 beginningDelimiter 和 endingDelimiter 在哪儿使用的。以下是使用位置。
org.mybatis.generator.api.FullyQualifiedTable#FullyQualifiedTable
这个方法代码如下
public FullyQualifiedTable(String introspectedCatalog, String introspectedSchema, String introspectedTableName, String domainObjectName, String alias, boolean ignoreQualifiersAtRuntime, String runtimeCatalog, String runtimeSchema, String runtimeTableName, boolean delimitIdentifiers, DomainObjectRenamingRule domainObjectRenamingRule, Context context) { super(); this.introspectedCatalog = introspectedCatalog; this.introspectedSchema = introspectedSchema; this.introspectedTableName = introspectedTableName; this.ignoreQualifiersAtRuntime = ignoreQualifiersAtRuntime; this.runtimeCatalog = runtimeCatalog; this.runtimeSchema = runtimeSchema; this.runtimeTableName = runtimeTableName; this.domainObjectRenamingRule = domainObjectRenamingRule; if (stringHasValue(domainObjectName)) { int index = domainObjectName.lastIndexOf('.'); if (index == -1) { this.domainObjectName = domainObjectName; } else { this.domainObjectName = domainObjectName.substring(index + 1); this.domainObjectSubPackage = domainObjectName.substring(0, index); } } if (alias == null) { this.alias = null; } else { this.alias = alias.trim(); } beginningDelimiter = delimitIdentifiers ? context .getBeginningDelimiter() : ""; //$NON-NLS-1$ endingDelimiter = delimitIdentifiers ? context.getEndingDelimiter() : ""; //$NON-NLS-1$ }
注释我就不贴了,在这个方法最后,说的很清楚,beginningDelimiter 和 endingDelimiter 可以是你设置的值,但是务必要使 delimitIdentifiers = true。那我们继续找一下 delimitIdentifiers 在哪儿设置的。
org.mybatis.generator.internal.db.DatabaseIntrospector#calculateIntrospectedTables
在这个地方我们看他代码
private List<IntrospectedTable> calculateIntrospectedTables( TableConfiguration tc, Map<ActualTableName, List<IntrospectedColumn>> columns) { boolean delimitIdentifiers = tc.isDelimitIdentifiers() || stringContainsSpace(tc.getCatalog()) || stringContainsSpace(tc.getSchema()) || stringContainsSpace(tc.getTableName()); List<IntrospectedTable> answer = new ArrayList<IntrospectedTable>(); for (Map.Entry<ActualTableName, List<IntrospectedColumn>> entry : columns .entrySet()) { ActualTableName atn = entry.getKey(); FullyQualifiedTable table = new FullyQualifiedTable( stringHasValue(tc.getCatalog()) ? atn.getCatalog() : null, stringHasValue(tc.getSchema()) ? atn.getSchema() : null, atn.getTableName(), tc.getDomainObjectName(), tc.getAlias(), isTrue(tc.getProperty(PropertyRegistry.TABLE_IGNORE_QUALIFIERS_AT_RUNTIME)), tc.getProperty(PropertyRegistry.TABLE_RUNTIME_CATALOG), tc.getProperty(PropertyRegistry.TABLE_RUNTIME_SCHEMA), tc.getProperty(PropertyRegistry.TABLE_RUNTIME_TABLE_NAME), delimitIdentifiers, tc.getDomainObjectRenamingRule(), context); IntrospectedTable introspectedTable = ObjectFactory .createIntrospectedTable(tc, table, context); for (IntrospectedColumn introspectedColumn : entry.getValue()) { introspectedTable.addColumn(introspectedColumn); } calculatePrimaryKey(table, introspectedTable); enhanceIntrospectedTable(introspectedTable); answer.add(introspectedTable); } return answer; }
在这里我们可以看到 delimitIdentifiers 的判断规则。
从以上梳理的结果,我们大致可以认为,以下四种情况,可以使 beginningDelimiter 和 endingDelimiter 的设置生效。
1.<table> 标签中设置 delimitIdentifiers 属性。
2.<table> 标签中设置 catalog 属性,并且在前后或者任何位置,有空格。(不要问我为什么,我也不知道。。)
3.<table> 标签中设置 schema 属性,并且在前后或者任何位置,有空格。(不要问我为什么,我也不知道。。)
4.<table> 标签中设置 tableName 属性,并且在前后或者任何位置,有空格。(不要问我为什么,我也不知道。。)
以上。
相关推荐
mybatis-generator-config_1_0.dtd文件存在于mybatis-generator-core-1.3.2.jar包中,路径如下org/mybatis/generator/config/xml/mybatis-generator-config_1_0.dtd 可以设置开发工具的dtd配置,配置...
赠送jar包:mybatis-generator-core-1.3.7.jar; 赠送原API文档:mybatis-generator-core-1.3.7-javadoc.jar; 赠送源代码:mybatis-generator-core-1.3.7-sources.jar; 赠送Maven依赖信息文件:mybatis-generator-...
mybatis-plus最新代码生成器项目源码 :mybatis-plus-generator.zip mybatis-plus最新代码生成器项目源码 :mybatis-plus-generator.zip mybatis-plus最新代码生成器项目源码 :mybatis-plus-generator.zip ...
"mybatis-generator-gui" 是一个基于MyBatis框架的可视化工具,主要用于简化数据库映射文件(Mapper文件)的创建过程。MyBatis是一个优秀的Java持久层框架,它支持定制化SQL、存储过程以及高级映射,避免了几乎所有...
赠送jar包:mybatis-generator-core-1.3.7.jar; 赠送原API文档:mybatis-generator-core-1.3.7-javadoc.jar; 赠送源代码:mybatis-generator-core-1.3.7-sources.jar; 赠送Maven依赖信息文件:mybatis-generator-...
【标题】"mybatis-generator-1.3.2 代码生成" 涉及到的是一个基于MyBatis框架的代码生成工具,主要用于自动化地创建MyBatis的SQL映射文件、Mapper接口、Mapper XML文件以及实体类。这个工具极大地提高了开发效率,...
"mybatis-generator-core-1.3.2" 是 MBG 的一个特定版本,它包含了所有必要的组件来帮助我们自动化 MyBatis 配置和代码生成过程。 MyBatis Generator 使用 XML 配置文件来定义生成规则,包括数据库连接信息、表选择...
支持接口和XML更名的mybatis-generator,具体使用参考 https://blog.csdn.net/zzti_erlie/article/details/99606620
在IT行业中,SpringBoot和MyBatis-Generator是两个非常重要的工具,它们分别代表了微服务开发框架和自动化代码生成工具。将它们结合使用可以大大提高开发效率,减少手动编写重复代码的时间,使得开发者能更专注于...
赠送jar包:mybatis-generator-core-1.3.5.jar; 赠送原API文档:mybatis-generator-core-1.3.5-javadoc.jar; 赠送源代码:mybatis-generator-core-1.3.5-sources.jar; 包含翻译后的API文档:mybatis-generator...
在这个场景中,“逆向工程mybatis-generator-1.3.2”指的是对MyBatis Generator 1.3.2版本的源代码或执行流程进行逆向分析。MyBatis Generator(MBG)是一个强大的工具,能够自动生成MyBatis接口和映射器XML文件,...
赠送jar包:mybatis-generator-core-1.3.5.jar 赠送原API文档:mybatis-generator-core-1.3.5-javadoc.jar 赠送源代码:mybatis-generator-core-1.3.5-sources.jar 包含翻译后的API文档:mybatis-generator-core-...
java -jar mybatis-generator-core-1.3.2.jar -configfile mysqlGeneratorConfig.xml -overwrite #sql server java -jar mybatis-generator-core-1.3.2.jar -configfile sqlServerGeneratorConfig.xml -overwrite ...
《mybatis-generator-gui-plus详解:提升MyBatis开发效率的利器》 在Java开发领域,MyBatis作为一款优秀的持久层框架,以其简洁、灵活的特性深受开发者喜爱。然而,面对大量的数据库操作,手动编写SQL映射文件、...
`mybatis-generator-1.4.0.rar` 是一个压缩包,包含了MBG的1.4.0版本及其相关的资源,包括可能的使用说明和运行所需的jar包。 **1. MyBatis Generator(MBG)简介** MyBatis Generator是MyBatis框架的一个插件,它...
mybatis-generator-gui自动生成代码的工具,但是jdk必须大于1.8
最新mybatis逆向生成工具,方便简单实用,maven地址 <groupId>org.mybatis.generator <artifactId>mybatis-generator-core <version>1.3.2 </dependency>
标题 "mybatis-generator自动生成代码[增加Service的生成]" 指的是MyBatis Generator(MBG)这一工具,它能够根据数据库表结构自动产生Java持久层代码,大大减轻了开发人员的手动编码工作。在描述中提到"增加Service...
2. **Mybatis-generator配置**: 使用Mybatis-generator首先需要一个配置文件,通常为`generatorConfig.xml`。在这个文件中,你可以定义数据源信息、生成的目标文件位置、需要生成的类和接口等。比如,你可以指定...