(10)Spring Boot 集成Mybatis Plus 配置代码生成器

303 阅读1分钟

简介

MyBatis-Plus (简称 MP) 是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。官网地址

Spring Boot 集成

在Spring Boot中集成Mybatis Plus的方式非常简单,只需添加相关的依赖即可。

  • pom.xml 文件中引入 相关依赖 依赖

            <!--mysql 驱动-->
            <dependency>
                <groupId>com.mysql</groupId>
                <artifactId>mysql-connector-j</artifactId>
            </dependency>
            <!--mybatis plus-->
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>3.5.3.1</version>
            </dependency>
            <!--代码生成器-->
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-generator</artifactId>
                <version>3.5.3.1</version>
            </dependency>
            <!--freemarker-->
            <dependency>
                <groupId>org.freemarker</groupId>
                <artifactId>freemarker</artifactId>
            </dependency>
    
  • 配置Mybatis plus

    #mysql 配置
    spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
    spring.datasource.username=root
    spring.datasource.password=root
    spring.datasource.url=jdbc:mysql://localhost:3306/mingsl
    ​
    mybatis-plus.mapper-locations=classpath*:/mapper/**/*.xml
    ​
    spring.application.name=mingsl-project
    #配置日志的打印级别
    logging.level.com.mingsl.lesson=debug
    logging.file.path=logs
    logging.file.name=${logging.file.path}/${spring.application.name}.log
    
  • 配置代码生成器

    @SpringBootTest
    public class TestMybatisPlus {
        @Resource
        private ISysUserService iSysUserService;
    ​
        @Test
        public void testMP(){
            FastAutoGenerator.create("jdbc:mysql://localhost:3306/mingsl", "root", "root")
                    .globalConfig(builder -> {
                        builder.author("小霍") // 设置作者
                                .disableOpenDir()
                                .enableSwagger() // 开启 swagger 模式
                                .outputDir("生成文件路径"); // 指定输出目录
                    })
                    .dataSourceConfig(builder -> builder.typeConvertHandler((globalConfig, typeRegistry, metaInfo) -> {
                        int typeCode = metaInfo.getJdbcType().TYPE_CODE;
                        if (typeCode == Types.TINYINT) {
                            // 自定义类型转换
                            return DbColumnType.INTEGER;
                        }
                        return typeRegistry.getColumnType(metaInfo);
    ​
                    }))
                    .packageConfig(builder -> {
                        builder.parent("com.mingsl") // 设置父包名
                                .moduleName("lesson") // 设置父包模块名
                                .pathInfo(Collections.singletonMap(OutputFile.xml, "生成文件路径")); // 设置mapperXml生成路径
                    })
                    .strategyConfig(builder -> {
                        builder.addInclude("sys_user") // 设置需要生成的表名
                        .entityBuilder()
                        .enableFileOverride() //文件自动覆盖
                        .enableLombok()
                        .idType(IdType.ASSIGN_ID)
                        .mapperBuilder()
                        .enableFileOverride()
                        .enableBaseResultMap()
                        .controllerBuilder()
                        .enableRestStyle()
                        .enableFileOverride()
                                ;
                    })
                    .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
                    .execute();
        }
    }
    
  • 启动类配置扫码mapper接口

    @SpringBootApplication
    @MapperScan("com.mingsl.lesson.mapper")
    public class MingslAdminApiApplication {
    ​
        public static void main(String[] args) {
            SpringApplication.run(MingslAdminApiApplication.class, args);
        }
    ​
    }