IEDA 使用mybatis-generator插件自动生成代码及遇到的问题

本文详细介绍了如何使用MyBatis Generator插件进行自动代码生成,包括pom.xml配置、generatorConfig.xml文件设置及maven命令的添加。通过配置数据库连接、实体类、Mapper接口和XML文件的生成路径,实现快速开发。

 一、pom配置

            <plugin>
                    <groupId>org.mybatis.generator</groupId>
                    <artifactId>mybatis-generator-maven-plugin</artifactId>
                    <version>1.3.2</version>
                    <configuration>
                        <!--配置文件的位置-->
                        <configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
                        <verbose>true</verbose>
                        <overwrite>true</overwrite>
                    </configuration>
                    <executions>
                        <execution>
                            <id>Generate MyBatis Artifacts</id>
                            <goals>
                                <goal>generate</goal>
                            </goals>
                        </execution>
                    </executions>
                    <dependencies>
                        <dependency>
                            <groupId>org.mybatis.generator</groupId>
                            <artifactId>mybatis-generator-core</artifactId>
                            <version>1.3.2</version>
                        </dependency>
                    </dependencies>
                </plugin>

 

二、在resources目录下创建generatorConfig.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>

    <!-- 本地数据库驱动程序jar包的全路径 -->
    <classPathEntry location="E:\WebChat\target\webchat\file\jar\mysql-connector-java-5.1.25.jar"/>

    <context id="context" targetRuntime="MyBatis3">
        <commentGenerator>
            <property name="suppressAllComments" value="false"/>
            <property name="suppressDate" value="true"/>
        </commentGenerator>

        <!-- 数据库的相关配置 -->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/test"
                        userId="root"
                        password="123"/>

        <javaTypeResolver>
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>

        <!-- 实体类生成的位置 -->
        <javaModelGenerator targetPackage="org.tuliu.landtransfer.model" targetProject="./src/main/java">
            <property name="enableSubPackages" value="false"/>
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>

        <!-- *Mapper.xml 文件的位置 -->
        <sqlMapGenerator targetPackage="org.tuliu.landtransfer.mapper" targetProject="./src/main/java">
            <property name="enableSubPackages" value="false"/>
        </sqlMapGenerator>

        <!-- Mapper 接口文件的位置 -->
        <javaClientGenerator targetPackage="org.tuliu.landtransfer.mapper" targetProject="./src/main/java" type="XMLMAPPER">
            <property name="enableSubPackages" value="false"/>
        </javaClientGenerator>

        <!-- 相关表的配置 -->
        <table tableName="test01" enableCountByExample="false" enableDeleteByExample="false" enableSelectByExample="false"
               enableUpdateByExample="false"/>
    </context>
</generatorConfiguration>

    主要配置几点,基本的mysql的jar包,数据库的连接配置,然后最主要的4个路径,实体类,mapper接口,mapper的sql,及表名。

 

三、添加maven命令

  

  working dictionry为项目的所在位置

  配置上述步骤后,在右侧的maven列表中会出现

       

      运行generate命令即可自动生成代码。

 

  可能遇到的问题,如若出现

  

[ERROR] No plugin found for prefix 'mybatis-generator' in the current project and in the plugin groups [org.apache.maven.plugins, org.codehaus.mojo] available from the repositories [local (C:\Users\yamat\.m2\repository), central (http://repo.maven.apache.org/maven2)] -> [Help 1]
org.apache.maven.plugin.prefix.NoPluginFoundForPrefixException: No plugin found for prefix 'mybatis-generator' in the current project and in the plugin groups [org.apache.maven.plugins, org.codehaus.mojo] available from the repositories [local (C:\Users\yamat\.m2\repository), central (http://repo.maven.apache.org/maven2)]
at org.apache.maven.plugin.prefix.internal.DefaultPluginPrefixResolver.resolve(DefaultPluginPrefixResolver.java:93)
at org.apache.maven.lifecycle.internal.MojoDescriptorCreator.findPluginForPrefix(MojoDescriptorCreator.java:260)
at org.apache.maven.lifecycle.internal.MojoDescriptorCreator.getMojoDescriptor(MojoDescriptorCreator.java:220)
at org.apache.maven.lifecycle.internal.DefaultLifecycleExecutionPlanCalculator.calculateMojoExecutions(DefaultLifecycleExecutionPlanCalculator.java:188)
at org.apache.maven.lifecycle.internal.DefaultLifecycleExecutionPlanCalculator.calculateExecutionPlan(DefaultLifecycleExecutionPlanCalculator.java:118)
at org.apache.maven.lifecycle.internal.DefaultLifecycleExecutionPlanCalculator.calculateExecutionPlan(DefaultLifecycleExecutionPlanCalculator.java:135)
at org.apache.maven.lifecycle.internal.builder.BuilderCommon.resolveBuildPlan(BuilderCommon.java:97)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:101)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:76)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:116)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:361)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:155)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:584)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:213)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:157)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
at org.codehaus.classworlds.Launcher.main(Launcher.java:46)

 

出现这个问题可能是因为maven命令的工作目录没有写对,如下

 如我开始写的是fencheng-v2,没有jspxcms,而fencheng-v2只是个目录,只有在jspxcms下面才有pom,src,resources等目录。

 若有不对欢迎指出。

 

    

 

转载于:https://www.cnblogs.com/qsymg/p/10364465.html

<think>我们正在解决MyBatis-Plus与Spring Boot 3集成时,使用分页插件PaginationInnerInterceptor报错的问题。 根据引用[1]和引用[2]的内容,我们注意到可能存在依赖冲突,特别是同时引入了mybatis-spring-boot-starter和mybatis-plus-spring-boot3-starter。 因此,首先需要检查依赖,确保只使用MyBatis-Plus的starter,并且版本与Spring Boot 3兼容。 步骤: 1. 检查pom.xml或build.gradle中是否同时存在mybatis-spring-boot-starter和mybatis-plus-spring-boot3-starter。如果有,移除mybatis-spring-boot-starter,因为MyBatis-Plus已经包含了MyBatis的核心功能。 2. 确保使用MyBatis-Plus针对Spring Boot 3的starter,即mybatis-plus-spring-boot3-starter,并且版本是适配Spring Boot 3的(如3.5.3.1或更高版本)。 3. 配置分页插件,注意在Spring Boot 3中,配置方式可能有所变化,但基本配置类似。 以下是一个配置示例: 在配置类中(例如MyBatisPlusConfig)添加分页插件: ```java import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class MyBatisPlusConfig { @Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); // 分页插件 interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); // 如果使用其他数据库,请更改DbType return interceptor; } } ``` 4. 如果仍然报错,请检查错误信息。常见的错误包括: - 版本不兼容:确保MyBatis-Plus版本与Spring Boot 3兼容。例如,MyBatis-Plus 3.5.3.1+支持Spring Boot 3。 - 重复的插件配置:避免多次配置分页插件- 依赖冲突:使用mvn dependency:tree或gradle dependencies命令检查依赖冲突,排除冲突的依赖。 5. 如果报错信息涉及类找不到或方法不存在,可能是由于MyBatis-Plus版本过低。请升级到最新版本。 例如,在pom.xml中,使用如下依赖: ```xml <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.3.1</version> <!-- 或者更高版本 --> </dependency> ``` 注意:Spring Boot 3需要Java 17及以上版本,请确保项目环境正确。 如果问题仍然存在,请提供具体的错误信息,以便进一步排查。 相关问题: 1. MyBatis-Plus在Spring Boot 3中还有哪些常见问题? 2. 如何配置MyBatis-Plus的乐观锁插件? 3. MyBatis-Plus的分页原理是什么?</think>### PaginationInnerInterceptor 报错解决方案(MyBatis-Plus + Spring Boot 3) #### 问题分析 当 MyBatis-Plus 的 `PaginationInnerInterceptor` 在 Spring Boot 3 环境中报错时,通常由以下原因导致: 1. **依赖冲突**:同时引入了 `mybatis-spring-boot-starter` 和 `mybatis-plus-boot-starter` 导致组件冲突[^2]。 2. **版本不兼容**:MyBatis-Plus 版本未适配 Spring Boot 3(需 ≥ 3.5.3.1)。 3. **插件配置错误**:分页插件未正确注入 Spring 容器。 #### 解决方案 ##### 1. 修正依赖配置(关键步骤) 移除冲突的依赖,仅保留 MyBatis-Plus 官方 Starter: ```xml <dependencies> <!-- 移除冲突依赖 --> <!-- <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> </dependency> --> <!-- 使用 MyBatis-Plus 官方 Starter --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.6</version> <!-- Spring Boot 3 需 ≥ 3.5.3.1 --> </dependency> </dependencies> ``` ##### 2. 正确配置分页插件 创建配置类注册拦截器: ```java import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class MybatisPlusConfig { @Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); // 添加分页拦截器并指定数据库类型 interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); return interceptor; } } ``` ##### 3. 验证分页功能 在 Service 层使用分页查询: ```java import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @Service public class UserServiceImpl extends ServiceImpl<UserMapper, User> { public Page<User> getUserPage(int current, int size) { return page(new Page<>(current, size)); } } ``` #### 注意事项 1. **JDK 版本**:Spring Boot 3 需 JDK 17+ 2. **自动配置冲突**:避免使用 `@MapperScan("org.mybatis.spring")` 等非 MyBatis-Plus 的扫描注解[^1] 3. **日志验证**:启动时检查日志是否出现 `PaginationInnerInterceptor` 加载信息 #### 常见错误处理 | 错误类型 | 解决方案 | |---------|----------| | `NoSuchMethodError` | 升级 MyBatis-Plus 至 3.5.3.1+ | | `BeanCreationException` | 检查是否重复注册分页插件 | | `ClassNotFoundException` | 排除冲突依赖(如 `mybatis-spring`) | --- ### 相关问题 1. 如何解决 MyBatis-Plus 与 Spring Boot 3 整合时的类型处理器(TypeHandler)注册问题? 2. MyBatis-Plus 分页查询出现 `Total` 字段错误应如何调试? 3. 在 Spring Boot 3 中如何配置 MyBatis-Plus 的多租户(TenantLineInnerInterceptor)功能? [^1]: MyBatis-Plus 的自动配置会扫描 `@Mapper` 接口,需避免与其他 MyBatis 组件冲突 [^2]: `mybatis-spring-boot-starter` 与 `mybatis-plus-boot-starter` 存在组件重叠,不可同时使用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值