软件编程
位置:首页>> 软件编程>> java编程>> 基于Mybatis plus 自动代码生成器的实现代码

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

作者:夏天的尾巴ljh  发布时间:2023-11-24 10:40:51 

标签:mybatis,plus,代码,生成器

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 自动代码生成器的实现代码,希望对大家有所帮助.

来源:https://blog.csdn.net/weixin_41685100/article/details/80342246

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com