您的当前位置:首页正文

MyBatis-plus 代码生成器的使用

2024-11-11 来源:个人技术集锦

前言

MyBatis-plus 提供了许多开箱即用的工具,其中就包括了将数据库表映射为实体类的代码生成器。该工具可以便捷快速地生成体现 ORM 思想的 Entity、Mapper 等模块代码,大大提高开发效率

1. 依赖引入

  • Gradle

     compile 'com.baomidou:mybatis-plus-boot-starter:3.4.3.4'
     compile 'com.baomidou:mybatis-plus-generator:3.4.1'
     compile 'mysql:mysql-connector-java'
     compile 'org.apache.velocity:velocity-engine-core:2.3'
    
  • Maven

    <!--mybatis-plus-->
    <dependency>
     	<groupId>com.baomidou</groupId>
     	<artifactId>mybatis-plus-boot-starter</artifactId>
     	<version>3.4.3.4</version>
    </dependency>
    <!--mybatis-plus代码生成器-->
    <dependency>
     	<groupId>com.baomidou</groupId>
     	<artifactId>mybatis-plus-generator</artifactId>
     	<version>3.4.1</version>
    </dependency>
    <!--velocity模板-->
    <dependency>
     	<groupId>org.apache.velocity</groupId>
    		<artifactId>velocity-engine-core</artifactId>
     	<version>2.3</version>
    </dependency>
     <!--mysql-->
    <dependency>
     	<groupId>mysql</groupId>
     	<artifactId>mysql-connector-java</artifactId>
     	<scope>runtime</scope>
    </dependency>
    

2. 使用示例

一个快速使用的示例代码如下所示,简单来说主要包含以下几个部分:

public class EntityGenerator {

    public static void main(String[] args) {
        //1. 全局配置
        GlobalConfig config = new GlobalConfig();
        config.setAuthor("") // 作者
                // 项目模块目录作为生成文件的路径
                .setOutputDir(System.getProperty("user.dir") + "/repository/src/main/java")
                .setFileOverride(true) // 文件覆盖
                .setIdType(IdType.AUTO) // 主键策略
                .setServiceName("%sRepositoryService")
                .setServiceImplName("%sRepositoryServiceImpl")
                .setMapperName("%sMapper")
                .setBaseResultMap(true)
                .setBaseColumnList(true);

        //2. 数据源配置
        DataSourceConfig dsConfig = new DataSourceConfig();
        dsConfig.setDbType(DbType.MYSQL) // 设置数据库类型
                .setDriverName("com.mysql.jdbc.Driver")
                // 数据库连接 url,指定数据库名
                .setUrl("jdbc:mysql://127.0.0.1:3306/example?useSSL=true&verifyServerCertificate=false&allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8" +
                        "&autoReconnect=true&serverTimezone=UTC&testOnBorrow=true&validationQuery=select 1")
                .setUsername("root")
                .setPassword("rot");

        //3. 策略配置
        StrategyConfig strategyConfig = new StrategyConfig();
        strategyConfig.setCapitalMode(true) //全局大写命名
                // 需要映射为 entity 的库表表名
                .setInclude("example".split(","))
                // 表前缀,如有,映射生成 entity 时将会去除前缀作为类名
                .setTablePrefix("t_")
                //是否使用lombok
                .setEntityLombokModel(true)
                // 数据库表名映射到实体的命名策略
                .setNaming(NamingStrategy.underline_to_camel)
                // 数据库表字段映射到实体的命名策略
                .setColumnNaming(NamingStrategy.underline_to_camel);

        //4. 包名策略配置
        PackageConfig packageConfig = new PackageConfig();
        packageConfig
                // 父包名
                .setParent("com.nathan")
                // 包名
                .setModuleName("example")
                .setMapper("mapper")
                .setService("service")
                .setEntity("model.entity");

        //5. 模板配置,默认使用 velocity 模版引擎
        TemplateConfig templateConfig = new TemplateConfig();
        //控制不生成 controller  xml
        templateConfig.disable(TemplateType.CONTROLLER);
        templateConfig.disable(TemplateType.XML);

        //6. 整合配置,执行
        AutoGenerator mpg = new AutoGenerator();
        mpg.setGlobalConfig(config)
                .setDataSource(dsConfig)
                .setStrategy(strategyConfig)
                .setPackageInfo(packageConfig)
                .setTemplate(templateConfig);
        mpg.execute();
    }
}
显示全文