mybatisPlus使用代码生成器可以生成controller、service以及serviceImpl实现类,有些疑问?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatisPlus使用代码生成器可以生成controller、service以及serviceImpl实现类,有些疑问?相关的知识,希望对你有一定的参考价值。
我看了service接口继承了IService,而对应的serviceImpl则不仅实现了service接口还继承了ServiceImpl这个mybatisPlus中的类,但是我看IService和ServiceImpl里的方法都差不多,实在不太明白为什么要继承2次呢
参考技术A 因为实现接口和继承类不一样,前者需要在实现类中写具体方法,后者子类可以重写父类方法也可以直接使用,即多态性。使用mybatisplus生成表的代码记录
最近在做一个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();
}
}
以上是关于mybatisPlus使用代码生成器可以生成controller、service以及serviceImpl实现类,有些疑问?的主要内容,如果未能解决你的问题,请参考以下文章
springBoot --- mybatisPlus自动生成代码
MybatisPlus的代码生成器 使用详解(整合springboot)
MybatisPlus的代码生成器 使用详解(整合springboot)
MybatisPlus的代码生成器 使用详解(整合springboot)