SpringBoot项目使用mybatis-plus代码生成的实例详解

2022-10-15 18:14:39
目录
前言安装依赖application.yml添加配置代码生成实例代码生成依赖数据源配置globalConfig处理通用配置packageConfig包名设置strategyConfig配置小结总结

前言

mybatis-plus官方地址

https://baomidou.com

mybatis-plus是mybatis的增强,不对mybatis做任何改变,涵盖了代码生成,自定义ID生成器,快速实现CRUD,自动分页,逻辑删除等功能,更多功能请查阅官方文档

安装依赖

mybatis-plus-generator

<!-- mybatis plus 代码生成器 -->
<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>

application.yml添加配置

针对spring>

mybatis-plus:
  mapper-locations: classpath*:mapper/**/*Mapper.xml
  type-aliases-package: com.lewyon.mybatislewyon.entity

代码生成实例

代码生成依赖

在代码生成之前,我们还需要添加mysql等相关包,进行导入,当前实例使用freemarker模板,因此需要添加相关依赖

<!-- mysql -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.26</version>
</dependency>
<!-- freemarker -->
<dependency>
    <groupId>org.freemarker</groupId>
    <artifactId>freemarker</artifactId>
    <version>2.3.31</version>
</dependency>

数据源配置

实例化DataSourceConfig方法对数据源进行配置,传入数据库地址和账号密码

private static final DataSourceConfig.Builder DATA_SOURCE_CONFIG = new DataSourceConfig
    .Builder("jdbc:mysql://localhost:3306/user?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC", "root", "lewyon123")
    .dbQuery(new MySqlQuery()) //数据库查询
    .schema("mybatis-plus") //数据库schema(部分数据库适用)
    .typeConvert(new MySqlTypeConvert()) //数据库类型转换器
    .keyWordsHandler(new MySqlKeyWordsHandler()); //数据库关键字处理器

globalConfig处理通用配置

.globalConfig(builder -> {
    builder.author("lewyon") // 设置作者
            .enableSwagger() // 开启 swagger 模式
            .fileOverride() // 覆盖已生成文件
            .disableOpenDir() //禁止打开输出目录
            .outputDir(projectPath + "/src/main/java"); // 指定输出目录
})

packageConfig包名设置

packageConfig配置项包括父包名,entity,service,>

xml配置,控制器controller等。

.packageConfig(builder -> {
    builder.parent("com.lewyon.mybatislewyon") // 设置父包名
            .moduleName("user") // 设置父包模块名
            .entity("entity")
            .service("service")
            .serviceImpl("service.impl")
            .mapper("mapper")
            .xml("mapper.xml")
            .controller("controller");
})

strategyConfig配置

    strategyConfig配置设置包括表名称以及表名处理格式化Service以及ServiceImpl,添加%s前缀表示去除>
    .strategyConfig(builder -> {
        builder.addInclude("user") // 设置需要生成的表名
                .addTablePrefix("t_", "c_").controllerBuilder()
                .enableHyphenStyle()
                .enableRestStyle()
                .serviceBuilder()
                .formatServiceFileName("%sService")
                .formatServiceImplFileName("%sServiceImp")
                .build();
    })
    

    小结

    以上就是关于mybatis-plus生成代码包的基础实例,完整代码如下:

    package com.lewyon.mybatislewyon;
    
    import com.baomidou.mybatisplus.generator.FastAutoGenerator;
    import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
    import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;
    import com.baomidou.mybatisplus.generator.config.querys.MySqlQuery;
    import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
    import com.baomidou.mybatisplus.generator.engine.VelocityTemplateEngine;
    import com.baomidou.mybatisplus.generator.keywords.MySqlKeyWordsHandler;
    
    public class GeneratorCode {
        /**
         * 数据源配置
         */
        private static final DataSourceConfig.Builder DATA_SOURCE_CONFIG = new DataSourceConfig
                .Builder("jdbc:mysql://localhost:3306/user?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC", "root", "lewyon123")
                .dbQuery(new MySqlQuery()) //数据库查询
                .schema("mybatis-plus") //数据库schema(部分数据库适用)
                .typeConvert(new MySqlTypeConvert()) //数据库类型转换器
                .keyWordsHandler(new MySqlKeyWordsHandler()); //数据库关键字处理器
    
        public static void main(String[] args) {
            String projectPath = System.getProperty("user.dir");
            FastAutoGenerator.create(DATA_SOURCE_CONFIG)
                    .globalConfig(builder -> {
                        builder.author("lewyon") // 设置作者
                                .enableSwagger() // 开启 swagger 模式
                                .fileOverride() // 覆盖已生成文件
                                .disableOpenDir() //禁止打开输出目录
                                .outputDir(projectPath + "/src/main/java"); // 指定输出目录
                    })
                    .packageConfig(builder -> {
                        builder.parent("com.lewyon.mybatislewyon") // 设置父包名
                                .moduleName("user") // 设置父包模块名
                                .entity("entity")
                                .service("service")
                                .serviceImpl("service.impl")
                                .mapper("mapper")
                                .xml("mapper.xml")
                                .controller("controller");
                    })
                    .strategyConfig(builder -> {
                        builder.addInclude("user") // 设置需要生成的表名
                                .addTablePrefix("t_", "c_").controllerBuilder()
                                .enableHyphenStyle()
                                .enableRestStyle()
                                .serviceBuilder()
                                .formatServiceFileName("%sService")
                                .formatServiceImplFileName("%sServiceImp")
                                .build();
                    })
                    .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
                    .execute();
    
        }
    }
    

    mybatis-plus生成代码当前实例只针对单表查询,表字段为:id,name,这里表结构不做单独列举,需要的同学请自行建表处理。

    总结

    项目源码地址:

    https://gitee.com/lewyon/spring-note

    以上就是SpringBoot项目使用mybatis-plus代码生成的实例详解的详细内容,更多关于SpringBoot使用mybatis-plus代码生成的资料请关注易采站长站其它相关文章!