mybatisPlus自动生成代码

  • mybatisPlus自动生成代码
    • pom.xml
    • application.yml
    • 自动生成代码测试
    • 主启动类
    • 生成目录结果
  • 使用插件 — 版本要求:3.4.0 版本以上
    • pom.xml更新mybatisplus插件版本
    • mp报错‘AutoGenerator()‘ has private access in ‘com.baomidou.mybatisplus.generator.AutoGenerator‘
    • 项目目录
    • 分页插件 版本要求:3.4.0 版本以上

mybatisPlus自动生成代码

pom.xml

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">    <modelVersion>4.0.0</modelVersion>    <parent>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-parent</artifactId>        <version>2.5.11</version>        <relativePath/> <!-- lookup parent from repository -->    </parent>    <groupId>com.hrf</groupId>    <artifactId>blog</artifactId>    <version>0.0.1-SNAPSHOT</version>    <name>blog</name>    <description>blog</description>    <properties>        <java.version>1.8</java.version>    </properties>    <dependencies>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter</artifactId>        </dependency>        <dependency>            <groupId>org.projectlombok</groupId>            <artifactId>lombok</artifactId>            <optional>true</optional>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-test</artifactId>            <scope>test</scope>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-configuration-processor</artifactId>        </dependency>        <!--        mybatis-plus依赖-->        <dependency>            <groupId>com.baomidou</groupId>            <artifactId>mybatis-plus-boot-starter</artifactId>            <version>3.3.0</version>        </dependency>        <!--        MP代码生成器依赖-->        <dependency>            <groupId>com.baomidou</groupId>            <artifactId>mybatis-plus-generator</artifactId>            <version>3.3.0</version>        </dependency>        <!--freemarker模板引擎-->        <dependency>            <groupId>org.freemarker</groupId>            <artifactId>freemarker</artifactId>            <version>2.3.28</version>        </dependency>        <dependency>            <groupId>mysql</groupId>            <artifactId>mysql-connector-java</artifactId>            <scope>runtime</scope>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-web</artifactId>        </dependency>    </dependencies>    <build>        <plugins>            <plugin>                <groupId>org.springframework.boot</groupId>                <artifactId>spring-boot-maven-plugin</artifactId>                <configuration>                    <excludes>                        <exclude>                            <groupId>org.projectlombok</groupId>                            <artifactId>lombok</artifactId>                        </exclude>                    </excludes>                </configuration>            </plugin>        </plugins>    </build></project>

application.yml

spring:  datasource:    driver-class-name: com.mysql.cj.jdbc.Driver    url: jdbc:mysql://localhost:3306/blog?serverTimezone=Asia/Shanghai    username: root    password: "0429"mybatis-plus:  configuration:    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #开启SQL语句打印#  global-config:#    db-config:#      id-type: auto  #  配置了全局采用自增主键策略

自动生成代码测试

package com.hrf.blog.generator;import com.baomidou.mybatisplus.annotation.DbType;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.NamingStrategy;import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;import org.junit.jupiter.api.Test;public class GeneratorTest {    @Test    public void generate() {        AutoGenerator generator = new AutoGenerator();        //1. 全局配置        GlobalConfig config = new GlobalConfig();        //  获取用户程序当前路径        String projectPath = System.getProperty("user.dir");        // 设置输出到的目录        config.setOutputDir(projectPath + "/src/main/java");        config.setAuthor("hrf");        // 生成结束后是否打开文件夹        config.setOpen(true);        //  是否覆盖已有文件        config.setFileOverride(true);        // 全局配置添加到 generator 上        generator.setGlobalConfig(config);        //2. 数据源配置        DataSourceConfig dataSourceConfig = new DataSourceConfig();        //  数据库类型//        dataSourceConfig.setDbType(DbType.MYSQL);        dataSourceConfig.setUrl("jdbc:mysql://localhost:3306/blog?serverTimezone=Asia/Shanghai");        dataSourceConfig.setDriverName("com.mysql.cj.jdbc.Driver");        dataSourceConfig.setUsername("root");        dataSourceConfig.setPassword("0429");        // 数据源配置添加到 generator代码生成器主类        generator.setDataSource(dataSourceConfig);        //3. 包配置, 生成的代码放在哪个包下        PackageConfig packageConfig = new PackageConfig();//        packageConfig.setModuleName("module");// 父包模块名        packageConfig.setParent("com.hrf.blog");// 父包名。如果为空,将下面子包名必须写全部, 否则就只需写子包名        packageConfig.setService("service");// Service包名        packageConfig.setEntity("entity");// Entity包名        packageConfig.setServiceImpl("service.impl");// ServiceImpl包名        packageConfig.setMapper("mapper");// Mapper包名        packageConfig.setController("controller");// Contoller包名        packageConfig.setXml("mapper.xml");// Mapper.xml包名        // 包配置添加到 generator        generator.setPackageInfo(packageConfig);        //4. 策略配置 数据库表配置,通过该配置,可指定需要生成哪些表或者排除哪些表等信息,        StrategyConfig strategyConfig = new StrategyConfig();        // 下划线驼峰命名转换        strategyConfig.setNaming(NamingStrategy.underline_to_camel);        // 数据库表字段映射到实体的命名策略, 未指定按照 naming 执行        strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel);        // 自定义继承类全称,带包名 (以下为示例)//        strategyConfig.setSuperEntityClass("com.baomidou.ant.common.BaseEntity");//        strategyConfig.setSuperControllerClass("com.baomidou.ant.common.BaseController");        strategyConfig.setEntityLombokModel(true);// 【实体】是否为lombok模型(默认 false)        strategyConfig.setRestControllerStyle(true);// 生成 @RestController 控制器        strategyConfig.setSuperEntityColumns("id");// 写于父类中的公共字段//        strategyConfig.setInclude("fnd_user");// 需要包含的表名,允许正则表达式(与exclude二选一配置)//        strategyConfig.setExclude("m_fnd_user1");// 需要排除的表名,允许正则表达式        strategyConfig.setControllerMappingHyphenStyle(true);// 驼峰转连字符        strategyConfig.setEntityTableFieldAnnotationEnable(true);// 是否生成实体时,生成字段注解 默认false;        // 把策略配置添加到代码生成器主类        generator.setStrategy(strategyConfig);//   5. 向代码生成器主类上配置模板引擎,这是是freemarker,mpg.execute()方法就是执行生成代码类。        generator.setTemplateEngine(new FreemarkerTemplateEngine());        // 开始生成        generator.execute();    }}

主启动类

package com.hrf.blog;import org.mybatis.spring.annotation.MapperScan;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication@MapperScan("com.hrf.blog.mapper")//扫描包public class BlogApplication {    public static void main(String[] args) {        SpringApplication.run(BlogApplication.class, args);    }}

生成目录结果

参考地址MyBatis-Plus

使用插件 — 版本要求:3.4.0 版本以上

pom.xml更新mybatisplus插件版本

 <!--        mybatis-plus依赖-->        <dependency>            <groupId>com.baomidou</groupId>            <artifactId>mybatis-plus-boot-starter</artifactId>            <version>3.5.3</version>        </dependency>        <!--        MP代码生成器依赖-->        <dependency>            <groupId>com.baomidou</groupId>            <artifactId>mybatis-plus-generator</artifactId>            <version>3.5.3</version>        </dependency>

mp报错‘AutoGenerator()‘ has private access in ‘com.baomidou.mybatisplus.generator.AutoGenerator‘

产生原因:新版本中对象已经私有化。
解决方法:使用新的代码生成器

 @Test    public void generate(){        //  获取用户程序当前路径        String projectPath = System.getProperty("user.dir");        // 设置输出到的目录        String out = projectPath + "/src/main/java";//        设置mapper.xml生成路径        String xmlOut = projectPath + "/src/main/java/com/hrf/blog/user/mapper/xml";        FastAutoGenerator.create("jdbc:mysql://localhost:3306/blog" />

分页插件 版本要求:3.4.0 版本以上

package com.hrf.blog.config;import com.baomidou.mybatisplus.annotation.DbType;import com.baomidou.mybatisplus.autoconfigure.ConfigurationCustomizer;import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;import org.mybatis.spring.annotation.MapperScan;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;@Configuration@MapperScan("com.hrf.blog.mapper")public class MybatisPlusConfig {    /**     * 新的分页插件,一缓和二缓遵循mybatis的规则,需要设置 MybatisConfiguration#useDeprecatedExecutor = false 避免缓存出现问题(该属性会在旧插件移除后一同移除)     */    @Bean    public MybatisPlusInterceptor mybatisPlusInterceptor() {        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));        return interceptor;    }//    @Bean//    public ConfigurationCustomizer configurationCustomizer() {//        return configuration -> configuration.setUseDeprecatedExecutor(false);//    }}