mybatisplus代码生成器不生成文件和报错

初次执行报错了后来查了下缺一个依赖
在这里插入图片描述

<dependency>
			<groupId>org.apache.velocity</groupId>
			<artifactId>velocity-engine-core</artifactId>
			<version>2.0</version>
		</dependency>

再次执行发现就生成了目录没有生成文件,后面排查发现表名必须写大写才可以
=表名需大写=

package com.beibei;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.converts.OracleTypeConvert;
import com.baomidou.mybatisplus.generator.config.po.TableFill;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;
import com.baomidou.mybatisplus.generator.config.rules.IColumnType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

import java.util.ArrayList;

/**
 * @ClassName BeibeiCode
 * @Description
 * @Author
 * @Date 2021/5/31 15:15
 **/
public class BeibeiCode {
    public static void main(String[] args) {
        //构建一个代码生成器对象
        AutoGenerator mpg= new AutoGenerator();
        //配置策略

        //1.全局配置
        GlobalConfig gc = new GlobalConfig();
        //获取当前用户项目目录
        String projiectPath = System.getProperty("user.dir");
        System.out.println("projiectPath:=="+projiectPath);
        //输出目录
       // gc.setOutputDir(projiectPath+"/src/main/java");
        gc.setOutputDir(projiectPath+"/target/generator-code");


        //设置作者
        gc.setAuthor("beibeiya");
        //实体属性 Swagger2 注解
        gc.setSwagger2(true);
        //生成之后是否打开文件夹
        gc.setOpen(false);
        //是否覆盖
        gc.setFileOverride(true);
        //去Service的I前缀
        gc.setServiceName("%sService");
        gc.setServiceImplName("%sServiceImpl");
        //设置idType的生成类型
        gc.setIdType(IdType.ID_WORKER);
        gc.setDateType(DateType.ONLY_DATE);

        mpg.setGlobalConfig(gc);

        //2.设置数据源
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setDbType(DbType.ORACLE);

        dsc.setTypeConvert(new ITypeConvert() {
            @Override
            public IColumnType processTypeConvert(GlobalConfig globalConfig, String fieldType) {
                String t = fieldType.toLowerCase();
                if (t.contains("number")) {
                    return DbColumnType.INTEGER;
                }
                return new OracleTypeConvert().processTypeConvert(globalConfig,fieldType);
            }

        });
        dsc.setDriverName("oracle.jdbc.OracleDriver");
        dsc.setUsername("****");//数据库账号
        dsc.setPassword("****");//数据库密码
        dsc.setUrl("jdbc:oracle:thin:@ip:port/**");
        mpg.setDataSource(dsc);

        //3.包的配置
        PackageConfig pc = new PackageConfig();
        //模块名字
        pc.setModuleName("testGeneratoe");
        pc.setParent("com.beibei");
        pc.setEntity("entity");
        pc.setMapper("mapper");
        pc.setService("service");
        pc.setController("controller");
        mpg.setPackageInfo(pc);

        //4.策略配置

        StrategyConfig strategy = new StrategyConfig();
        //设置需要自动生产的表名,可包含多张表
        //ps表名要大写否则生成的只有文件夹没有文件
        String[] tables = new String[]{
                "CLMS_CONTRACT",
                "USER_TEST"};
        strategy.setInclude(tables);
        //下划线转驼峰
        strategy.setNaming(NamingStrategy.underline_to_camel);
        strategy.setColumnNaming(NamingStrategy.underline_to_camel);
        //是否支持lombok
        strategy.setEntityLombokModel(true);
        //rest风格
        strategy.setRestControllerStyle(true);
        //下划线命名 user_id_2
        strategy.setControllerMappingHyphenStyle(true);
        //逻辑删除配置
        strategy.setLogicDeleteFieldName("deleted");
        //自动填充配置  GMT_MODIFIED

        //创建时间更新时间填充
        TableFill gmt_creat = new TableFill("GMT_CREAT", FieldFill.INSERT);
        TableFill gmt_modified = new TableFill("GMT_MODIFIED", FieldFill.UPDATE);
        ArrayList<TableFill> tableFills = new ArrayList<>();
        tableFills.add(gmt_creat);
        tableFills.add(gmt_modified);
        strategy.setTableFillList(tableFills);
        //乐观锁
        strategy.setVersionFieldName("version");


        mpg.setStrategy(strategy);


        mpg.execute();//执行自动生成

    }
}


<think>好的,我现在需要解决用户关于MyBatis-Plus拦截器自动添加的问题。用户提到拦截器被自动添加,想找到屏蔽或解决方案。首先,我需要回忆MyBatis-Plus拦截器的工作机制。 根据引用[1],用户可能配置了MybatisPlusInterceptor,并通过addInnerInterceptor方法添加了内部拦截器。自动添加的情况可能发生在某些插件或配置自动注册了拦截器。比如,分页插件或乐观锁插件可能会被自动加载。 接下来,我应该考虑用户如何检查现有的拦截器。可以通过调试或日志查看MybatisPlusInterceptor中的interceptors列表,确认是否有需要的拦截器被添加。这一步很关键,因为要先确定问题的根源。 然后,解决方案可能包括手动覆盖配置,清除自动添加的拦截器。例如,在配置类中,先创建一个新的MybatisPlusInterceptor实例,再添加需要的拦截器,避免重复。或者,在配置时检查是否已经存在相同类型的拦截器,避免重复添加。 另外,用户可能需要排除自动配置类。如果项目是Spring Boot应用,可以通过@EnableAutoConfiguration的exclude属性排除相关的自动配置类,防止框架自动添加拦截器。 还需要考虑代码生成器的影响,引用[4]提到AutoGenerator可能会生成一些配置,检查是否有生成代码自动添加了拦截器。 最后,用户可能需要自定义配置,完全控制拦截器的添加,避免第三方库或框架的自动行为。同时,检查依赖冲突,确保没有引入多个版本的MyBatis-Plus导致拦截器被多次注册。 总结步骤:1. 确认拦截器来源;2. 手动配置覆盖;3. 排除自动配置;4. 检查依赖生成代码。需要确保每一步都给出具体的代码示例,比如如何手动添加拦截器,如何排除配置类等。同时,提醒用户根据实际情况调整,比如具体的拦截器类名可能需要替换。</think>### MyBatis-Plus拦截器自动添加问题的解决方案 #### 问题原因分析 MyBatis-Plus拦截器可能因以下情况被自动添加: 1. **全局配置加载**:通过`MybatisPlusInterceptor`默认加载了内置拦截器(如分页插件、乐观锁)[^1] 2. **第三方依赖引入**:某些模块(如多租户插件)可能自动注册拦截器 3. **代码生成器影响**:`AutoGenerator`生成代码可能包含拦截器配置[^4] #### 解决方案步骤 ##### 1. 确认现有拦截器配置 ```java @Configuration public class MybatisConfig { @Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); // 打印已存在的拦截器 System.out.println("当前拦截器列表:" + interceptor.getInterceptors()); return interceptor; } } ``` 通过日志输出检查自动添加的拦截器类型 ##### 2. 手动覆盖配置(推荐) ```java @Bean public MybatisPlusInterceptor manualInterceptor() { MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); // 清空自动添加的拦截器 interceptor.getInterceptors().clear(); // 手动添加需要的拦截器 interceptor.addInnerInterceptor(new PaginationInnerInterceptor()); return interceptor; } ``` ##### 3. 排除自动配置类 在Spring Boot启动类添加: ```java @SpringBootApplication(exclude = { MybatisPlusAutoConfiguration.class }) ``` ##### 4. 精确控制拦截器添加 ```java @Bean public MybatisPlusInterceptor customInterceptor(Optional<PaginationInnerInterceptor> pageInterceptor) { MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); // 条件判断是否添加分页插件 pageInterceptor.ifPresent(interceptor::addInnerInterceptor); // 添加自定义拦截器 interceptor.addInnerInterceptor(new MyCustomInterceptor()); return interceptor; } ``` ##### 5. 检查依赖冲突 在`pom.xml`中排除需要的模块: ```xml <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.3.1</version> <exclusions> <exclusion> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-extension</artifactId> </exclusion> </exclusions> </dependency> ``` #### 验证方法 1. 在应用启动时检查日志输出 2. 使用调试模式查看`MybatisPlusInterceptor`实例的拦截器列表 3. 执行相关SQL操作验证拦截器是否生效 #### 注意事项 1. 清除拦截器可能导致功能缺失(如分页失效) 2. 多个数据源需要分别配置 3. 注意拦截器执行顺序的影响
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值