基于Mybatis plus 自动代码生成器的实现代码

所属分类: 软件编程 / java 阅读数: 25
收藏 0 赞 0 分享

1.使用的是maven项目,添加依赖

<!-- mybatis-plus begin --> 
   <dependency> 
     <groupId>com.baomidou</groupId> 
     <artifactId>mybatis-plus</artifactId> 
     <version>2.2.0</version> 
   </dependency> 

还有数据库的连接

<dependency> 
    <groupId>mysql</groupId> 
    <artifactId>mysql-connector-java</artifactId> 
    <scope>compile</scope> 
</dependency> 

最后是源码

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; 
import org.junit.jupiter.api.Test; 
/** 
 * mybatis-plus 自动生成代码 
 * 
 * @author Terry 
 * @version 1.0 
 * @date 2018-05-16 09:35 
 */ 
public class SimpleMp { 
  @Test 
  public void generateCode() { 
    //指定包名 
    String packageName = "com.hciot.hhhh"; 
    //user -> UserService, 设置成true: user -> IUserService 
    boolean serviceNameStartWithI = false; 
    //指定生成的表名 
    String[] tableNames = new String[]{"data_air_sensor_co", "order_product", "relation_device_gateway"}; 
    generateByTables(serviceNameStartWithI, packageName, tableNames); 
  } 
  /** 
   * 根据表自动生成 
   * 
   * @param serviceNameStartWithI 默认为false 
   * @param packageName      包名 
   * @param tableNames      表名 
   * @author Terry 
   */ 
  private void generateByTables(boolean serviceNameStartWithI, String packageName, String... tableNames) { 
    //配置数据源 
    DataSourceConfig dataSourceConfig = getDataSourceConfig(); 
    // 策略配置 
    StrategyConfig strategyConfig = getStrategyConfig(tableNames); 
    //全局变量配置 
    GlobalConfig globalConfig = getGlobalConfig(serviceNameStartWithI); 
    //包名配置 
    PackageConfig packageConfig = getPackageConfig(packageName); 
    //自动生成 
    atuoGenerator(dataSourceConfig, strategyConfig, globalConfig, packageConfig); 
  } 
  /** 
   * 集成 
   * 
   * @param dataSourceConfig 配置数据源 
   * @param strategyConfig  策略配置 
   * @param config      全局变量配置 
   * @param packageConfig  包名配置 
   * @author Terry 
   */ 
  private void atuoGenerator(DataSourceConfig dataSourceConfig, StrategyConfig strategyConfig, GlobalConfig config, PackageConfig packageConfig) { 
    new AutoGenerator() 
        .setGlobalConfig(config) 
        .setDataSource(dataSourceConfig) 
        .setStrategy(strategyConfig) 
        .setPackageInfo(packageConfig) 
        .execute(); 
  } 
  /** 
   * 设置包名 
   * 
   * @param packageName 父路径包名 
   * @return PackageConfig 包名配置 
   * @author Terry 
   */ 
  private PackageConfig getPackageConfig(String packageName) { 
    return new PackageConfig() 
        .setParent(packageName) 
        .setXml("mapper") 
        .setMapper("dao") 
        .setController("controller") 
        .setEntity("entity"); 
  } 
  /** 
   * 全局配置 
   * 
   * @param serviceNameStartWithI false 
   * @return GlobalConfig 
   * @author Terry 
   */ 
  private GlobalConfig getGlobalConfig(boolean serviceNameStartWithI) { 
    GlobalConfig globalConfig = new GlobalConfig(); 
    globalConfig 
        .setBaseColumnList(true) 
        .setBaseResultMap(true) 
        .setActiveRecord(false) 
        .setAuthor("Terry") 
        //设置输出路径 
        .setOutputDir(getOutputDir("mybatis-plus")) 
        .setFileOverride(true); 
    if (!serviceNameStartWithI) { 
      //设置service名 
      globalConfig.setServiceName("%sService"); 
    } 
    return globalConfig; 
  } 
  /** 
   * 返回项目路径 
   * 
   * @param projectName 项目名 
   * @return 项目路径 
   * @author Terry 
   */ 
  private String getOutputDir(String projectName) { 
    String path = this.getClass().getClassLoader().getResource("").getPath(); 
    int index = path.indexOf(projectName); 
    return path.substring(1, index) + projectName + "/src/main/java/"; 
  } 
  /** 
   * 策略配置 
   * 
   * @param tableNames 表名 
   * @return StrategyConfig 
   * @author Terry 
   */ 
  private StrategyConfig getStrategyConfig(String... tableNames) { 
    return new StrategyConfig() 
        // 全局大写命名 ORACLE 注意 
        .setCapitalMode(true) 
        .setEntityLombokModel(false) 
        // 表名、字段名、是否使用下划线命名(默认 false) 
        .setDbColumnUnderline(true) 
        //从数据库表到文件的命名策略 
        .setNaming(NamingStrategy.underline_to_camel) 
        //需要生成的的表名,多个表名传数组 
        .setInclude(tableNames); 
  } 
  /** 
   * 配置数据源 
   * 
   * @return 数据源配置 DataSourceConfig 
   * @author Terry 
   */ 
  private DataSourceConfig getDataSourceConfig() { 
    String dbUrl = "jdbc:mysql://localhost:3306/test"; 
    return new DataSourceConfig().setDbType(DbType.MYSQL) 
        .setUrl(dbUrl) 
        .setUsername("root") 
        .setPassword("root") 
        .setDriverName("com.mysql.jdbc.Driver"); 
  } 
  /** 
   * 根据表自动生成 
   * 
   * @param packageName 包名 
   * @param tableNames 表名 
   * @author Terry 
   */ 
  @SuppressWarnings("unused") 
  private void generateByTables(String packageName, String... tableNames) { 
    generateByTables(true, packageName, tableNames); 
  } 
} 

以上所述是小编给大家介绍的基于Mybatis plus 自动代码生成器的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

更多精彩内容其他人还在看

Java基础之反射原理与用法详解

这篇文章主要介绍了Java基础之反射原理与用法,结合实例形式详细分析了java反射的相关概念、原理、使用方法与操作注意事项,需要的朋友可以参考下
收藏 0 赞 0 分享

java字符串的截取方法substring()代码解析

这篇文章主要介绍了java字符串的截取方法substring()代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
收藏 0 赞 0 分享

Mybatis一对多关联关系映射实现过程解析

这篇文章主要介绍了Mybatis一对多关联关系映射实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
收藏 0 赞 0 分享

Java整数和字符串相互转化实例详解

这篇文章主要介绍了Java整数和字符串相互转化实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
收藏 0 赞 0 分享

Spring Boot 项目设置网站图标的方法

这篇文章主要介绍了Spring Boot 项目设置网站图标的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

java多态机制原理特点详解

在本篇文章里小编给大家分享的是关于java多态机制原理特点详解,有需要的朋友们可以跟着学习下。
收藏 0 赞 0 分享

Jmeter如何添加循环控制器

这篇文章主要介绍了Jmeter如何添加循环控制器,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
收藏 0 赞 0 分享

java虚拟机创建失败的原因整理

在本篇文章里小编给大家整理了关于创建java虚拟机失败的解决方法和知识点,需要的朋友们可以参考学习下。
收藏 0 赞 0 分享

Java如何把int类型转换成byte

这篇文章主要介绍了Java如何把int类型转换成byte,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
收藏 0 赞 0 分享

linux中java获取路径的实例代码

在本篇文章里小编给大家整理的是一篇关于linux中java获取路径的实例代码以及相关知识点,有兴趣的朋友们可以学习参考下。
收藏 0 赞 0 分享
查看更多