Mybatsi Generator生成mapper文件 关键字处理

本文介绍如何解决使用MyBatisGenerator自动生成Mapper文件时遇到的SQL关键字冲突问题,通过设置autoDelimitKeywords为true,并使用``作为界定符,有效避免了因字段名与SQL保留字冲突导致的错误。

1.问题描述,mybatsi的自动生成工具的方法,调用insert报错

2.解决办法,看到这种问题首先会想到sql语句报错

应为是使用的是:采用MyBatis Generator生成mapper文件,所以就是直接调用的方法,肯定是关键字出的问题,看了下Generator官网

http://www.mybatis.org/generator/configreference/context.html

autoDelimitKeywords 如果设置为true,MyBatis Generator (MBG)将会识别表的列明中的SQL关键字。如果个别关键字没有在MBG的的关键字列表里,可以通过<columnOverride>来界定。beginningDlimiter 开始的界定符,endingDelimiter设置结束界定符。

 <context id="default" targetRuntime="MyBatis3">
        <!-- optional,旨在创建class时,对注释进行控制 -->
        <commentGenerator>
			<!-- 自动识别数据库关键字,默认false -->
			<property name="autoDelimitKeywords" value="true" />
			<!--可以使用``包括字段名,避免字段名与sql保留字冲突报错 -->
			<property name="beginningDelimiter" value="`" />
			<property name="endingDelimiter" value="`" />
            <property name="suppressDate" value="true"/>
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>

可以解决问题

当然你要现修改 mapper呀 记得记上单引号

 

 

<think>首先,用户的问题是基于系统级指令和用户可见层的要求。系统级指令包括:所有行内数学表达式必须用$...$,独立公式用$$...$$单独成段,确保LaTeX语法正确,使用中文回答,生成相关问题,并在引用的段落末尾自然地添加引用标识。 用户的问题是关于使用MyBatis Generator生成Mapper层代码的方法。用户提供了几个引用: - 引用[1]: 关于自定义tk.mybatis.mapper.generator.MapperPlugin插件来生成mapper代码。 - 引用[2]: SpringBoot中使用MyBatis Generator生成Dao层代码的步骤。 - 引用[3]: 报错信息,关于插件依赖问题。 - 引用[4]: 配置jdbcConnection来解决生成的方法不全问题。 用户说这些引用仅供参考,我需要参考用户上一次的问题和我的回答。但从上下文看,用户直接问了这个问题:"我想查找使用MyBatis Generator生成Mapper层代码的方法 请问使用MyBatis Generator生成Mapper层代码的方法"。所以,我应该直接回答这个问题。 关键点:生成相关问题。指令说"生成相关问题",在示例中,是在回答后添加"§§相关问题§§"部分。 回答结构:需要清晰、逐步解决问题,保证真实可靠。 我的回答应该涵盖使用MyBatis Generator的基本方法。既然用户提到了SpringBoot和插件,我应该整合这些信息。 步骤基于引用[2],因为它详细描述了过程: 1. 创建一个Maven项目。 2. 在Resource文件夹下创建generator.properties文件。 3. 在Resource文件夹下创建generatorConfig.xml配置文件。 4. 配置Pom文件。 5. 配置Maven项目启动。 然后运行生成代码。 还需要提到插件和常见问题,比如引用[4]中提到的配置nullCatalogMeansCurrent属性来解决主键方法缺失问题。 引用[1]是关于自定义插件的,用户似乎扩展了tk.mybatis的插件,但用户的问题是"使用MyBatis Generator生成Mapper层代码的方法",所以核心是原生MyBatis Generator,但可以提及插件选项。 用户不可见的引用:我需要自然地添加引用标识。例如,如果提到某个点来自引用,就在末尾加[^n]。 现在,构建回答: 1. **引言**:简要介绍MyBatis Generator是什么。 2. **步骤**:详细说明如何使用它生成Mapper层代码。基于引用[2]。 - 创建Maven项目。 - 添加依赖:在pom.xml中添加mybatis-generator-maven-plugin。 - 配置generatorConfig.xml:指定数据库连接、表、生成模型等。 - 运行插件。 3. **常见问题**:提及用户引用中的点,比如依赖问题(引用[3])、方法不全问题(引用[4])。 4. **结束**:确保回答清晰。 然后,生成相关问题。 使用中文回答。 没有数学表达式,所以不需要LaTeX格式。 添加相关知识:既然用户提到了tk.mybatis插件,我可以简要提到插件选项。 最后,相关问题部分。 结构: - 回答用户问题。 - 在末尾添加相关问题。 引用标识:在提到具体内容时添加。例如,"根据引用[2],步骤如下..." 用户说"上述引用仅供参考",所以我不必严格依赖它们,但应该参考以增强可靠性。 整合回答: 1. 介绍:MyBatis GeneratorMyBatis的代码生成工具,可以自动生成Mapper接口、Model类和XML映射文件。 2. 基本方法(基于引用[2]): - 创建一个Maven项目。 - 在pom.xml中添加插件依赖: ```xml <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.4.0</version> <!-- 使用最新版本 --> </plugin> ``` - 在src/main/resources目录下创建generatorConfig.xml文件,配置数据库连接、表映射等。 - 运行命令:mvn mybatis-generator:generate 3. 配置细节:在generatorConfig.xml中,需要指定jdbcConnection等。引用[4]提到配置nullCatalogMeansCurrent属性以避免主键方法缺失问题。 4. 常见问题:如引用[3]中的依赖问题,可能是网络或证书问题;引用[1]的插件可以自定义生成逻辑。 5. 结束语。 然后,相关问题: </think>### 使用MyBatis Generator生成Mapper层代码的方法 MyBatis Generator(简称MBG)是MyBatis官方提供的代码生成工具,能够自动生成Mapper接口、XML映射文件、Model实体类等,显著提升开发效率。下面基于最佳实践和常见配置,逐步介绍如何使用MBG生成Mapper层代码,步骤清晰可靠。 #### 1. **准备工作:创建项目并添加依赖** 首先,创建一个Maven项目或确保现有项目支持MBG。在`pom.xml`中添加MBG插件和相关依赖: ```xml <dependencies> <!-- MyBatis核心依赖 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.6</version> <!-- 使用最新稳定版 --> </dependency> <!-- 数据库驱动(以MySQL为例) --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.33</version> </dependency> </dependencies> <build> <plugins> <!-- MBG Maven插件 --> <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.4.2</version> <!-- 推荐最新版本 --> <executions> <execution> <id>generate-mybatis-code</id> <phase>generate-sources</phase> <goals> <goal>generate</goal> </goals> </execution> </executions> </plugin> </plugins> </build> ``` 此配置确保MBG插件在Maven构建时自动运行[^2]。 #### 2. **配置生成文件:`generatorConfig.xml`** 在`src/main/resources`目录下创建`generatorConfig.xml`文件。这是MBG的核心配置文件,定义数据库连接、生成规则和表映射: ```xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"> <generatorConfiguration> <!-- 数据库连接配置 --> <context id="mysql" targetRuntime="MyBatis3"> <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/your_database?serverTimezone=UTC" userId="root" password="your_password"> <!-- 避免主键方法缺失问题 --> <property name="nullCatalogMeansCurrent" value="true"/> <!-- 关键配置[^4] --> </jdbcConnection> <!-- 生成Model类的位置 --> <javaModelGenerator targetPackage="com.example.model" targetProject="src/main/java"/> <!-- 生成Mapper XML的位置 --> <sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources"/> <!-- 生成Mapper接口的位置 --> <javaClientGenerator type="XMLMAPPER" targetPackage="com.example.mapper" targetProject="src/main/java"/> <!-- 指定需要生成代码的表 --> <table tableName="your_table" domainObjectName="YourEntity"/> <!-- 替换为实际表名和实体名 --> </context> </generatorConfiguration> ``` **关键说明**: - `jdbcConnection`配置数据库连接,注意`serverTimezone=UTC`避免时区问题。 - `nullCatalogMeansCurrent`属性确保生成所有主键相关方法(如`selectByPrimaryKey`),避免方法不全[^4]。 - `table`元素可指定多个表,或使用通配符生成所有表。 #### 3. **运行MBG生成代码** 通过Maven命令执行生成: - **命令行运行**:在项目根目录执行: ``` mvn mybatis-generator:generate ``` - **IDE集成**:在IDEA/Eclipse中,右键`pom.xml`选择`Maven > Generate Sources`。 成功运行后,代码将生成到指定目录: - Mapper接口:`src/main/java/com/example/mapper/YourEntityMapper.java` - XML映射文件:`src/main/resources/mapper/YourEntityMapper.xml` - Model实体类:`src/main/java/com/example/model/YourEntity.java` #### 4. **常见问题与优化** - **依赖问题**:若报错`Plugin ... could not be resolved`(如引用[3]),检查Maven仓库配置或网络,确保能访问中央仓库;临时解决方案:添加`-DskipTests`参数或更新插件版本[^3]。 - **自定义插件扩展**:如需增强生成逻辑(如添加通用方法),可集成`tk.mybatis.mapper.generator.MapperPlugin`(引用[1]),在`generatorConfig.xml`中添加: ```xml <plugin type="tk.mybatis.mapper.generator.MapperPlugin"/> <!-- 扩展Mapper功能[^1] --> ``` - **Spring Boot集成**:在Spring Boot项目中,配置更简化;引用`mybatis-spring-boot-starter`并确保`generatorConfig.xml`路径正确[^2]。 #### 5. **验证与使用** 生成后,在代码中直接注入Mapper接口: ```java @Autowired private YourEntityMapper yourEntityMapper; // Spring Boot自动装配 ``` 调用方法如`yourEntityMapper.selectByPrimaryKey(1)`即可操作数据库。 通过以上步骤,您可高效生成Mapper层代码。如需扩展功能,参考官方文档或社区插件[^1][^2]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值