Mybatis Generator

  • 使用xml配置文件形式自动生成
  • 只生成实体类、mapper接口及mapper.xml。并且包含丰富的内容
  • 首先添加mybatis依赖和相关插件
  <!-- 依赖MyBatis核心包 -->
  <dependencies>
      <dependency>
          <groupId>org.mybatis</groupId>
          <artifactId>mybatis</artifactId>
          <version>3.5.7</version>
      </dependency>
  </dependencies>
  <!-- 控制Maven在构建过程中相关配置 -->
  <build>
      <!-- 构建过程中用到的插件 -->
      <plugins>
          <!-- 具体插件,逆向工程的操作是以构建过程中插件形式出现的 -->
          <plugin>
              <groupId>org.mybatis.generator</groupId>
              <artifactId>mybatis-generator-maven-plugin</artifactId>
              <version>1.3.0</version>
              <!-- 插件的依赖 -->
              <dependencies>
                  <!-- 逆向工程的核心依赖 -->
                  <dependency>
                      <groupId>org.mybatis.generator</groupId>
                      <artifactId>mybatis-generator-core</artifactId>
                      <version>1.3.2</version>
                  </dependency>
                  <!-- 数据库连接池 -->
                  <dependency>
                      <groupId>com.mchange</groupId>
                      <artifactId>c3p0</artifactId>
                      <version>0.9.2</version>
                  </dependency>
                  <!-- MySQL驱动 -->
                  <dependency>
                      <groupId>mysql</groupId>
                      <artifactId>mysql-connector-java</artifactId>
                      <version>5.1.8</version>
                  </dependency>
              </dependencies>
          </plugin>
      </plugins>
  </build>
  • 创建generatorConfig.xml配置文件,从官网中复制下来即可.其中元素标签说明卸载注释中
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE generatorConfiguration
        PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" 
        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
    <!--
    targetRuntime: 执行生成的逆向工程的版本
        MyBatis3Simple:生成基本的CURD(清新简洁版)
        MyBatis3:生成带条件的CURD(奢华尊享版)
    -->
    <context id="DB2Tables" targetRuntime="MyBatis3">
          <!-- 数据库连接信息 -->
          <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                          connectionURL="jdbc:mysql:///your_database?useUnicode=true&amp;characterEncoding=utf8"
                          userId="username"
                          password="password" />
  
          <!-- javaBean的生成策略 -->
          <javaModelGenerator targetPackage="module_name.entity" targetProject=".\src\main\java">
              <property name="enableSubPackages" value="true" />
              <property name="trimStrings" value="true" />
          </javaModelGenerator>
  
          <!-- SQL映射文件的生成策略 -->
          <sqlMapGenerator targetPackage="mapper" targetProject=".\src\main\resources">
              <property name="enableSubPackages" value="true" />
          </sqlMapGenerator>
  
          <!-- Mapper接口的生成策略 -->
          <javaClientGenerator type="XMLMAPPER" targetPackage="module_name.mapper" targetProject=".\src\main\java">
              <property name="enableSubPackages" value="true" />
          </javaClientGenerator>
  
          <!-- 逆向分析的表 -->
          <!-- tableName设置为*号,可以对应所有的表,此时不用写domainObjectName -->
          <!-- domainObjectName属性指定生成出来的实体类的类名 -->
          <table tableName="admin" domainObjectName="Admin" />
      </context>
</generatorConfiguration>
  • 最后在右边点击maven中插件,双击mybatis-generator:generate
  • 说明:上述两个配置文件都会报红,不用管尽管运行即可

MybatisPlus Generator

  • 使用代码形式自动生成
  • 会生成从Controller层到Dao层的所有文件,其中还包括实体类
  • 首先添加必须的依赖
<dependencies>
  <!--mybatis-plus 持久层-->
  <dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.0.5</version>
  </dependency>

  <!-- velocity 模板引擎, Mybatis Plus 代码生成器需要 -->
  <dependency>
    <groupId>org.apache.velocity</groupId>
    <artifactId>velocity-engine-core</artifactId>
    <version>2.0</version>
  </dependency>

  <!--lombok用来简化实体类:需要安装lombok插件-->
  <dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.20</version>
  </dependency>

</dependencies>
  • 这里是在单元测试中运行
public class GeneratorTest{
  @Test
  public void run() {

    // 1、创建代码生成器
    AutoGenerator mpg = new AutoGenerator();

    // 2、全局配置
    GlobalConfig gc = new GlobalConfig();
    String projectPath = System.getProperty("user.dir");
    // 换成绝对路径
    gc.setOutputDir("your project absolute path" + "/src/main/java");
    gc.setAuthor("xsha_h");
    gc.setOpen(false); //生成后是否打开资源管理器
    gc.setFileOverride(false); //重新生成时文件是否覆盖
    gc.setServiceName("%sService");	//去掉Service接口的首字母I
    gc.setIdType(IdType.ID_WORKER_STR); //主键策略
    gc.setDateType(DateType.ONLY_DATE);//定义生成的实体类中日期类型
    gc.setSwagger2(true);//开启Swagger2模式

    mpg.setGlobalConfig(gc);

    // 3、数据源配置
    DataSourceConfig dsc = new DataSourceConfig();

    dsc.setUrl("jdbc:mysql:///database_name?serviceTimezone=GMT%2B8");
    dsc.setDriverName("com.mysql.cj.jdbc.Driver");
    dsc.setUsername("username");
    dsc.setPassword("password");
    dsc.setDbType(DbType.MYSQL);
    mpg.setDataSource(dsc);

    // 4、包配置
    PackageConfig pc = new PackageConfig();

    // 包名  com.xsha.module_name
    pc.setParent("com.xsha");
    pc.setModuleName("module_name"); //模块名
    pc.setController("controller");
    pc.setEntity("entity");
    pc.setService("service");
    pc.setMapper("mapper");
    mpg.setPackageInfo(pc);

    // 5、策略配置
    StrategyConfig strategy = new StrategyConfig();

    // 生成表格名称对应的实体类
    strategy.setInclude("table_name1", "table_name2", "table_name3", "table_name4");
    strategy.setNaming(NamingStrategy.underline_to_camel);//数据库表映射到实体的命名策略
    strategy.setTablePrefix(pc.getModuleName() + "_"); //生成实体时去掉表前缀(根据需求变化)

    strategy.setColumnNaming(NamingStrategy.underline_to_camel);//数据库表字段映射到实体的命名策略
    strategy.setEntityLombokModel(true); // lombok 模型 @Accessors(chain = true) setter链式操作

    strategy.setRestControllerStyle(true); //restful api风格控制器
    strategy.setControllerMappingHyphenStyle(true); //url中驼峰转连字符

    mpg.setStrategy(strategy);


    // 6、执行
    mpg.execute();
  }
}
  • 运行即可生效