阴鸦 2025-03-30 12:31 采纳率: 50%
浏览 5
已结题

Springboot项目

您好,我创建了一个Java的Springboot项目,这个是我的项目机构图

img


这个是我的mybatis-plus代码生成器

package com.hr.common;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import com.baomidou.mybatisplus.generator.config.OutputFile;

import java.util.Collections;

/**
 * 完全可用的 MyBatis-Plus 代码生成器 (3.5.11版本)
 */
public class CodeGenerator {

    public static void main(String[] args) {
        // 1. 获取项目路径
        String projectPath = System.getProperty("user.dir") + "/hr";
        System.out.println("项目路径: " + projectPath);

        // 2. 数据源配置
        DataSourceConfig dataSourceConfig = new DataSourceConfig.Builder(
                "jdbc:mysql://localhost:3306/hr?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC",
                "root",
                "root"
        ).schema("hr").build();

        // 3. 全局配置
        GlobalConfig globalConfig = new GlobalConfig.Builder()
                .outputDir(projectPath + "/src/main/java") // 指定输出目录
                .author("LYF") // 设置作者
                .enableSwagger() // 开启swagger模式
                .dateType(DateType.ONLY_DATE) // 时间策略
                .commentDate("yyyy-MM-dd") // 注释日期格式
                .fileOverride()  // 正确位置:在全局配置中开启覆盖
                .disableOpenDir()  // 禁止生成后打开目录(关键修改)
                .build();

        // 4. 包配置
        PackageConfig packageConfig = new PackageConfig.Builder()
                .parent("com.hr") // 父包名
                .moduleName(null) // 模块名(可选)
                .entity("entity") // 实体类包名
                .mapper("mapper") // Mapper接口包名
                .service("service") // Service包名
                .serviceImpl("service.impl") // Service实现类包名
                .controller("controller") // Controller包名
                .pathInfo(Collections.singletonMap(OutputFile.xml, projectPath + "/src/main/resources/mapper")) // XML文件位置
                .build();

        // 5. 策略配置
        StrategyConfig strategyConfig = new StrategyConfig.Builder()
                .addInclude("users") // 需要生成的表名
//                .addTablePrefix("t_", "sys_") // 表前缀过滤
                .entityBuilder() // 实体策略配置
                    .enableLombok() // 启用Lombok
                    .naming(NamingStrategy.underline_to_camel) // 数据库表映射到实体的命名策略
                    .columnNaming(NamingStrategy.underline_to_camel) // 数据库表字段映射到实体的命名策略
                    .idType(IdType.AUTO) // 主键策略
                    .enableTableFieldAnnotation() // 开启字段注解
                .controllerBuilder() // 控制器策略配置
                    .enableRestStyle() // 开启@RestController
                    .enableHyphenStyle() // 开启驼峰转连字符
                .mapperBuilder() // Mapper策略配置
                    .enableMapperAnnotation() // 开启@Mapper注解
                    .enableBaseResultMap() // 生成基本的resultMap
                    .enableBaseColumnList() // 生成基本的SQL片段
                .build();

        // 6. 创建代码生成器
        AutoGenerator generator = new AutoGenerator(dataSourceConfig);
        generator.global(globalConfig);
        generator.packageInfo(packageConfig);
        generator.strategy(strategyConfig);

        // 7. 执行生成 (JDK21兼容写法)
        generator.execute(new FreemarkerTemplateEngine());
    }
}

我在修改packageConfig.parent包名的时候,我如果修改成包名和项目名一样的,就导致mapper无法调用,这个是什么原因

  • 写回答

4条回答 默认 最新

  • 阴鸦 2025-03-30 15:25
    关注

    我的jar版本引用错误了,我还在用springbook的2.0的,我应该用3.0的

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 4月7日
  • 已采纳回答 3月30日
  • 创建了问题 3月30日