最近在做一個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();
}
}