问题 Execution default-cli of goal org.mybatis.generator:mybatis-generator-maven-plugin:1.3.2:generate failed
时间: 2023-11-10 21:32:18 AIGC 浏览: 291
这个错误表示在运行 Maven 命令时,执行 `org.mybatis.generator:mybatis-generator-maven-plugin:1.3.2:generate` 这个 goal 失败了。可能的原因包括:
1. 你没有将该插件添加到 Maven 项目中的 `pom.xml` 文件中。
2. 插件版本不正确,可能需要更新为最新版本。
3. 插件配置错误,例如配置文件路径不正确等。
4. 与该插件相关的依赖项没有正确添加到 `pom.xml` 文件中。
检查以上可能的原因,尝试解决问题。如果无法解决,请提供更多的错误信息和上下文以便更好地理解问题。
相关问题
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.12.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.goldwind.ipark</groupId> <artifactId>search-component-by-img-service</artifactId> <version>1.0.0</version> <name>search-component-by-img-service</name> <description>search-component-by-img-service</description> <properties> <java.version>1.8</java.version> <elasticsearch.version>7.17.3</elasticsearch.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <spring-boot-admin.version>2.4.3</spring-boot-admin.version> <spring-cloud.version>Hoxton.SR9</spring-cloud.version> <spring-cloud-alibaba-version>2.2.6.RELEASE</spring-cloud-alibaba-version> <skywalking.version>8.3.0</skywalking.version> <swagger.version>3.0.0</swagger.version> <poi.version>4.1.0</poi.version> <easypoi.version>4.1.2</easypoi.version> <maven.test.skip>true</maven.test.skip> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-data-redis</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-core</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.7.11</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.7.0</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.7.0</version> </dependency> <dependency> <groupId>org.apache.skywalking</groupId> <artifactId>apm-toolkit-logback-1.x</artifactId> <version>${skywalking.version}</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId> </dependency> <dependency> <groupId>com.xuxueli</groupId> <artifactId>xxl-job-core</artifactId> <version>2.1.2</version> </dependency> <dependency> <groupId>com.github.jsqlparser</groupId> <artifactId>jsqlparser</artifactId> <version>4.2</version> </dependency> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.2.1</version> <exclusions> <exclusion> <groupId>com.github.jsqlparser</groupId> <artifactId>jsqlparser</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.3.4</version> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.5.1</version> </dependency> <dependency> <groupId>com.github.jeffreyning</groupId> <artifactId>mybatisplus-plus</artifactId> <version>1.5.1-RELEASE</version> </dependency> <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.2.6</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> <version>7.1.0</version> </dependency> <dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka</artifactId> </dependency> <dependency> <groupId>org.redisson</groupId> <artifactId>redisson-spring-data-23</artifactId> <version>3.17.1</version> </dependency> <dependency> <groupId>org.redisson</groupId> <artifactId>redisson-spring-boot-starter</artifactId> <version>3.17.1</version> <exclusions> <exclusion> <groupId>org.redisson</groupId> <artifactId>redisson-spring-data-26</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high-level-client</artifactId> </dependency> <dependency> <groupId>com.goldwind.ipark</groupId> <artifactId>iparkcommon</artifactId> <version>1.0.0-SNAPSHOT</version> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpcore</artifactId> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpmime</artifactId> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> </dependency> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> </dependency> <dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib</artifactId> <version>2.2.2</version> <classifier>jdk15</classifier> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.78</version> </dependency> <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt</artifactId> <version>0.9.0</version> </dependency> <dependency> <groupId>org.jfree</groupId> <artifactId>jfreechart</artifactId> <version>1.5.0</version> </dependency> <dependency> <groupId>commons-net</groupId> <artifactId>commons-net</artifactId> <version>3.8.0</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>1.3.2</version> </dependency> <dependency> <groupId>org.jodd</groupId> <artifactId>jodd-core</artifactId> <version>5.3.0</version> </dependency> <dependency> <groupId>org.codehaus.groovy</groupId> <artifactId>groovy</artifactId> <version>2.4.12</version> </dependency> <dependency> <groupId>cz.mallat.uasparser</groupId> <artifactId>uasparser</artifactId> <version>0.6.2</version> </dependency> <dependency> <groupId>me.wanghuifeng</groupId> <artifactId>ronglian-sms-sdk</artifactId> <version>1.0</version> <exclusions> <exclusion> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>net.coobird</groupId> <artifactId>thumbnailator</artifactId> <version>0.4.18</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>${poi.version}</version> <scope>compile</scope> <optional>false</optional> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>${poi.version}</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml-schemas</artifactId> <version>${poi.version}</version> </dependency> <dependency> <groupId>org.hibernate.validator</groupId> <artifactId>hibernate-validator</artifactId> <version>6.2.0.Final</version> </dependency> <dependency> <groupId>cn.afterturn</groupId> <artifactId>easypoi-base</artifactId> <version>${easypoi.version}</version> </dependency> <dependency> <groupId>cn.afterturn</groupId> <artifactId>easypoi-web</artifactId> <version>${easypoi.version}</version> </dependency> <dependency> <groupId>cn.afterturn</groupId> <artifactId>easypoi-annotation</artifactId> <version>${easypoi.version}</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>3.0.5</version> </dependency> <dependency> <groupId>net.lingala.zip4j</groupId> <artifactId>zip4j</artifactId> <version>2.11.5</version> <!-- 检查最新版本 --> </dependency> <dependency> <groupId>io.milvus</groupId> <artifactId>milvus-sdk-java</artifactId> <version>2.5.10</version> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> </exclusion> <exclusion> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>com.google.protobuf</groupId> <artifactId>protobuf-java</artifactId> <version>3.21.12</version> </dependency> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk-s3</artifactId> <version>1.11.901</version> </dependency> <dependency> <groupId>org.locationtech.proj4j</groupId> <artifactId>proj4j</artifactId> <version>1.2.3</version> </dependency> <dependency> <groupId>com.drewnoakes</groupId> <artifactId>metadata-extractor</artifactId> <version>2.15.0</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>QLExpress</artifactId> <version>3.2.4</version> </dependency> </dependencies> <build> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <excludes> <exclude> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </exclude> </excludes> </configuration> </plugin> <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.5</version> <configuration> <verbose>true</verbose> <overwrite>true</overwrite> </configuration> <executions> <execution> <id>Generate MyBatis Artifacts</id> </execution> </executions> <dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.19</version> </dependency> </dependencies> </plugin> </plugins> </build> <profiles> <profile> <id>dev</id> <properties> <profileActive>dev</profileActive> </properties> </profile> </profiles> </project> 以上是 java springboot 工程的 pom.xml 的完整内容,现在启动工程报错 Caused by: java.lang.ClassNotFoundException: com.google.protobuf.MapFieldReflectionAccessor,帮我分析原因,告诉我如何修改?
<think>根据用户提供的引用资料和当前问题,用户需要解决SpringBoot工程启动时出现的java.lang.ClassNotFoundException:com.google.protobuf.MapFieldReflectionAccessor错误。这个错误表示运行时无法加载指定的类。结合引用[1]到[4]的分析思路,该错误通常由以下原因导致:1.依赖缺失:项目未正确引入包含该类的依赖库(google-protobuf相关jar包)2.版本冲突:项目中存在多个protobuf版本,导致类加载器无法找到特定版本的类3.构建问题:依赖未正确打包(如Maven/Gradle配置问题)解决方案步骤如下:1.添加protobuf依赖在Maven项目的pom.xml中添加:```xml<dependency><groupId>com.google.protobuf</groupId><artifactId>protobuf-java</artifactId><version>3.22.0</version><!--根据实际需要选择版本--></dependency>```或Gradle项目build.gradle中添加:```groovyimplementation'com.google.protobuf:protobuf-java:3.22.0'```2.检查依赖冲突执行命令查看依赖树:Maven:mvndependency:treeGradle:gradledependencies检查是否存在多个protobuf版本冲突,若有则通过<exclusions>排除旧版本3.验证依赖完整性-Maven项目执行mvncleaninstall-Gradle项目执行gradlecleanbuild确保依赖被正确下载4.检查构建配置确认打包插件(如spring-boot-maven-plugin)正确包含所有依赖5.如果使用特定功能(如gRPC),可能需要添加:```xml<dependency><groupId>com.google.protobuf</groupId><artifactId>protobuf-java-util</artifactId><version>3.22.0</version></dependency>```特别注意:MapFieldReflectionAccessor类在protobuf3.6+版本中存在,需确保版本>=3.66.若问题依旧,尝试清除本地仓库缓存(删除.m2/repository/com/google/protobuf目录后重新构建)7.最后检查运行时环境(如Tomcat)的classpath是否包含该jar包</think>
## 错误分析与解决方案:`java.lang.ClassNotFoundException: com.google.protobuf.MapFieldReflectionAccessor`
### 原因分析
1. **依赖缺失**(主要原因)
Spring Boot应用在启动时缺少必要的Protocol Buffers(Protobuf)依赖库,特别是包含`MapFieldReflectionAccessor`的包[^1]。
2. **版本冲突**
项目可能存在多个Protobuf版本,导致类加载器加载了旧版本(无目标类)[^2]。
3. **构建配置问题**
依赖未正确打包到部署包中(如Maven/Gradle构建配置错误)[^3]。
4. **间接依赖缺失**
第三方库(如gRPC、Spring Cloud Sleuth等)依赖Protobuf但未显式声明[^4]。
---
### 解决方案
#### ✅ 方法1:添加显式依赖(推荐)
在`pom.xml`中添加Google Protocol Buffers的依赖:
```xml
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>3.22.0</version> <!-- 确保版本≥3.6(引入目标类) -->
</dependency>
```
> **关键点**:`MapFieldReflectionAccessor`首次出现在Protobuf 3.6+版本[^1]
#### ✅ 方法2:解决依赖冲突
1. 检查依赖树:
```bash
mvn dependency:tree | grep 'com.google.protobuf'
```
或Gradle项目:
```bash
gradle dependencies | grep 'com.google.protobuf'
```
2. 若存在旧版本,强制指定版本:
```xml
<properties>
<protobuf.version>3.22.0</protobuf.version>
</properties>
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>${protobuf.version}</version>
</dependency>
```
#### ✅ 方法3:验证构建配置
1. 清理并重新构建:
```bash
mvn clean package
```
2. 检查生成的JAR/WAR中是否包含`protobuf-java-*.jar`:
```bash
unzip -l target/*.jar | grep 'MapFieldReflectionAccessor'
```
#### ✅ 方法4:特殊场景处理
若使用gRPC等框架,需补充:
```xml
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-protobuf</artifactId>
<version>1.54.0</version>
</dependency>
```
---
### 验证步骤
1. 添加依赖后执行:
```bash
mvn clean spring-boot:run
```
2. 检查启动日志中是否出现错误
3. 使用调试器验证类加载:
```java
Class.forName("com.google.protobuf.MapFieldReflectionAccessor"); // 测试类加载
```
> **注意**:若使用JDK 9+,需检查`module-info.java`是否开放反射权限:
> ```java
> opens your.package to com.google.protobuf;
> ```
---
### 预防措施
1. **显式声明关键依赖**:避免依赖传递不确定性
2. **版本对齐**:统一管理Protobuf版本:
```xml
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-bom</artifactId>
<version>3.22.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
```
3. 定期执行:`mvn versions:display-dependency-updates`
[^1]: 类加载失败直接反映依赖缺失
[^2]: 版本冲突是ClassNotFound的常见原因
[^3]: 构建问题导致依赖未打包
[^4]: 第三方库间接依赖需显式声明
java mybatis项目,如何实现根据mapper接口类自动创建mapper.xml文件
<think>我们正在讨论的是MyBatis框架中如何根据Mapper接口自动生成Mapper.xml文件。根据引用内容,我们知道可以通过MyBatisGenerator(MBG)工具来实现。下面我将详细说明步骤。###步骤说明1.**准备必要的JAR包**:需要下载以下文件并放在项目根目录下(或指定目录):-`mybatis-3.5.3.jar`-`mybatis-generator-core-1.3.2.jar`-`mybatis-generator-core-cxy.jar`(注意:这个可能是定制版本,通常使用官方版本即可,但引用中提到了这个,所以按引用说明)-`mysql-connector-java-8.0.13.jar`(如果是其他数据库,则替换为对应的驱动)2.**编写配置文件(config.xml)**:配置文件是MBG的核心,它指定了数据库连接信息、生成文件的存放位置、要生成的表等。3.**编写运行脚本(run.sh)**:通过运行脚本来执行生成命令。###配置文件示例下面是一个`config.xml`的示例(根据引用内容调整):```xml<!DOCTYPEgeneratorConfigurationPUBLIC"-//mybatis.org//DTDMyBatisGeneratorConfiguration1.0//EN""http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"><generatorConfiguration><!--数据库驱动包位置(修改为你自己的路径)--><classPathEntrylocation="mysql-connector-java-8.0.13.jar"/><contextid="DB2Tables"targetRuntime="MyBatis3"><!--防止生成重复代码--><plugintype="org.mybatis.generator.plugins.UnmergeableXmlMappersPlugin"/><!--配置数据库连接--><jdbcConnectiondriverClass="com.mysql.cj.jdbc.Driver"connectionURL="jdbc:mysql://localhost:3306/your_database"userId="root"password="root"></jdbcConnection><!--指定生成Java模型类的位置--><javaModelGeneratortargetPackage="com.example.model"targetProject="src/main/java"><propertyname="enableSubPackages"value="true"/><propertyname="trimStrings"value="true"/></javaModelGenerator><!--指定生成Mapper接口的位置--><javaClientGeneratortype="XMLMAPPER"targetPackage="com.example.mapper"targetProject="src/main/java"><propertyname="enableSubPackages"value="true"/></javaClientGenerator><!--指定生成SQL映射文件的位置--><sqlMapGeneratortargetPackage="mappers"targetProject="src/main/resources"><propertyname="enableSubPackages"value="true"/></sqlMapGenerator><!--指定要生成的表--><tabletableName="user"domainObjectName="User"/><tabletableName="order"domainObjectName="Order"/></context></generatorConfiguration>```###运行脚本创建一个`run.sh`文件(Windows下可以创建`run.bat`),内容如下(注意根据实际路径调整):```bash#!/bin/bashjava-jarmybatis-generator-core-cxy.jar-configfileconfig.xml-overwrite```然后给脚本执行权限(Linux/Mac):```bashchmod+xrun.sh```运行:```bash./run.sh```###注意事项-确保配置文件中的数据库连接信息、包路径、表名等正确。-如果使用官方MBG,则使用`mybatis-generator-core-1.3.7.jar`(或你下载的版本)替换`mybatis-generator-core-cxy.jar`。-生成过程中会覆盖已有的文件,所以请谨慎使用`-overwrite`参数。###引用说明上述步骤参考了引用[1]中提供的方法,但进行了详细解释和扩展[^1]。§§相关问题§§1.MyBatisGenerator配置文件中如何防止生成重复的SQL片段?2.除了使用命令行运行,MyBatisGenerator还有哪些运行方式?3.如何自定义MyBatisGenerator生成的代码,比如添加自定义注释?</think>### Java MyBatis 自动生成 Mapper.xml 文件指南
在 MyBatis 中,可以通过 **MyBatis Generator (MBG)** 工具根据 Mapper 接口自动生成 Mapper.xml 文件。以下是详细步骤:
---
#### **一、准备工作**
1. **添加依赖**(Maven 项目):
```xml
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.4.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
```
2. **配置文件结构**:
```
project-root
├── src
│ ├── main
│ │ ├── java (存放Mapper接口)
│ │ └── resources (存放生成的Mapper.xml)
└── generatorConfig.xml (MBG配置文件)
```
---
#### **二、配置 generatorConfig.xml**
```xml
<!DOCTYPE generatorConfiguration PUBLIC
"-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<!-- 数据库驱动路径 -->
<classPathEntry location="mysql-connector-java-8.0.33.jar"/>
<context id="DB2Tables" targetRuntime="MyBatis3">
<!-- 防止生成重复代码 -->
<plugin type="org.mybatis.generator.plugins.UnmergeableXmlMappersPlugin"/>
<!-- 数据库连接配置 -->
<jdbcConnection
driverClass="com.mysql.cj.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/your_db"
userId="root"
password="password"/>
<!-- Java模型类生成位置 -->
<javaModelGenerator
targetPackage="com.example.model"
targetProject="src/main/java"/>
<!-- Mapper接口生成位置 -->
<javaClientGenerator
type="XMLMAPPER"
targetPackage="com.example.mapper"
targetProject="src/main/java"/>
<!-- Mapper.xml生成位置 -->
<sqlMapGenerator
targetPackage="mappers"
targetProject="src/main/resources"/>
<!-- 指定要生成的表 -->
<table tableName="user"/>
<table tableName="order"/>
</context>
</generatorConfiguration>
```
---
#### **三、执行生成命令**
1. **命令行方式**:
```bash
java -jar mybatis-generator-core-1.4.1.jar -configfile generatorConfig.xml -overwrite
```
2. **Maven 插件方式**(推荐):
```xml
<build>
<plugins>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.4.1</version>
<executions>
<execution>
<id>Generate MyBatis Artifacts</id>
<phase>generate-sources</phase>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<configuration>
<configurationFile>generatorConfig.xml</configurationFile>
<overwrite>true</overwrite>
</configuration>
</plugin>
</plugins>
</build>
```
执行命令:
```bash
mvn mybatis-generator:generate
```
---
#### **四、生成结果**
- **Mapper 接口**:生成在 `com.example.mapper` 包
```java
public interface UserMapper {
int insert(User record);
User selectByPrimaryKey(Integer id);
// 其他方法...
}
```
- **Mapper.xml**:生成在 `src/main/resources/mappers` 目录
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.mapper.UserMapper">
<insert id="insert" parameterType="com.example.model.User">
INSERT INTO user (id, name) VALUES (#{id}, #{name})
</insert>
<select id="selectByPrimaryKey" resultType="com.example.model.User">
SELECT * FROM user WHERE id = #{id}
</select>
</mapper>
```
---
#### **五、注意事项**
1. **覆盖策略**:使用 `-overwrite` 参数会覆盖已有文件,慎用。
2. **定制 SQL**:MBG 生成基础 CRUD 操作,复杂 SQL 需手动补充。
3. **注解支持**:若使用 `@Mapper` 注解,需配置:
```xml
<javaClientGenerator type="ANNOTATEDMAPPER" ... />
```
4. **日志输出**:添加日志依赖(如 SLF4J)查看生成过程。
> 引用说明:MyBatis Generator 官方文档提供了完整的配置选项和扩展点[^1]。
阅读全文
相关推荐













