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