使用mybatisplus生成表的代码记录

时间:2022-05-14 19:52:06

最近在做一个springcloud项目使用的是postgre,网上一直找相关信息,无奈太少,找到生成方法,分享一下

通过Mybatis-Plus强大的自动代码生成功能我们可以让项目自动生成一些通用的类。如controller,service,dao,mapper等。进行代码自动生成之前,我们需要提前创建好一个表。自动代码生成会根据关联的这张表去生成代码。

1: 首先创建一个空的SpringBoot项目,在pom文件中加入依赖。

<!-- mybatisplus与springboot整合 -->
 <dependency>
     <groupId>com.baomidou</groupId>
     <artifactId>mybatisplus-spring-boot-starter</artifactId>
     <version>1.0.5</version>
 </dependency>
 <!-- MP 核心库 -->
 <dependency>
     <groupId>com.baomidou</groupId>
     <artifactId>mybatis-plus</artifactId>
     <version>2.1.8</version>
 </dependency>
 <dependency>
     <groupId>org.mybatis.spring.boot</groupId>
     <artifactId>mybatis-spring-boot-starter</artifactId>
     <version>1.3.2</version>
 </dependency>
 <!-- 模板引擎 代码生成 -->
 <dependency>
     <groupId>org.apache.velocity</groupId>
     <artifactId>velocity</artifactId>
     <version>1.7</version>
 </dependency>

以上是网友添加的依赖,我运行时发现没有postgresql的驱动,手动添加了如下:

 <!-- https://mvnrepository.com/artifact/org.postgresql/postgresql -->
 <dependency>
      <groupId>org.postgresql</groupId>
      <artifactId>postgresql</artifactId>
      <version>42.2.5</version>
  </dependency>

若还有其他包缺失,请在此网站查询添加。

2: 至此,添加完项目依赖。进行配置文件管理。在application.yml中进行如下配置。

#配置Mybatis-Plus
mybatis-plus:
    #配置扫描xml
    mapper-locations: classpath*:mapper/*/*Mapper.xml
    #配置实体扫描类
    type-aliases-package: 自己的包路径.*.mapper
    #逻辑删除配置
    global-config:
        sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector
        logic-delete-value: 1
        logic-not-delete-value: 0

3: 最后,在test包下新建文件CodeGeneration.java

package com.xxx.xxx.goods;

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.DbType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

/**
 * 自动生成类
 *
 * @author zhaohualuo
 * @date 2019/8/16
 **/
public class CodeGeneration {

    //main函数
    public static void main(String[] args) {

        AutoGenerator autoGenerator = new AutoGenerator();

        //全局配置
        GlobalConfig gc = new GlobalConfig();
        String oPath = System.getProperty("user.dir");//得到当前项目的路径
        gc.setOutputDir(oPath   "/src/main/java");   //生成文件输出根目录
        gc.setOpen(false);//生成完成后不弹出文件框
        gc.setFileOverride(true);  //文件覆盖
        gc.setActiveRecord(false);// 不需要ActiveRecord特性的请改为false
        gc.setEnableCache(false);// XML 二级缓存
        gc.setBaseResultMap(true);// XML ResultMap
        gc.setBaseColumnList(false);// XML columList
        gc.setAuthor("zhaohualuo");// 作者

        // 自定义文件命名,注意 %s 会自动填充表实体属性!
        gc.setControllerName("%sController");
        gc.setServiceName("%sService");
        gc.setServiceImplName("%sServiceImpl");
        gc.setMapperName("%sMapper");
        gc.setXmlName("%sMapper");
        autoGenerator.setGlobalConfig(gc);

        // 数据源配置
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setDbType(DbType.POSTGRE_SQL);   //设置数据库类型,我是postgresql
        dsc.setDriverName("org.postgresql.Driver");
        dsc.setUsername("postgres");
        dsc.setPassword("admin");
        dsc.setUrl("jdbc:postgresql://localhost:5432/book");  //指定数据库
        autoGenerator.setDataSource(dsc);

        // 策略配置
        StrategyConfig strategy = new StrategyConfig();
        strategy.setNaming(NamingStrategy.underline_to_camel);      // 表名生成策略
        strategy.setInclude(new String[] { "platform_goods" });     // 需要生成的表
        strategy.setSuperServiceClass(null);
        strategy.setSuperServiceImplClass(null);
        strategy.setSuperMapperClass(null);
        autoGenerator.setStrategy(strategy);

        // 包配置
        PackageConfig pc = new PackageConfig();
        pc.setParent("com.xxxx.xx.goods");
        pc.setController("controller");
        pc.setService("service");
        pc.setServiceImpl("service.impl");
        pc.setMapper("mapper");
        pc.setEntity("entity");
        pc.setXml("xml");
        autoGenerator.setPackageInfo(pc);

        // 执行生成
        autoGenerator.execute();
    }
}

在该文件右击,run该项目即可自动生成文件。

文件已生成成功,想要使用mapper包内的文件还需要在GoodsApplication文件中添加:
@MapperScan(basePackages = {"com.xxxx.xx.**.*mapper"})

完整的GoodsApplication文件如下:

package com.xxxx.xx.goods;

import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;

@SpringBootApplication
@MapperScan(basePackages = {"com.xxxx.xx.**.*mapper"})
public class GoodsApplication {

    public static void main(String[] args) {
        SpringApplication.run(GoodsApplication.class, args);
    }

    /**
     * mybatis-plus 分页插件  根据需要添加
     */
    @Bean
    public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
    }
}