一.新建一个spring-boot工程
流程如下:
Server URL:可以默认,也可以选择start.aliyun.com
Type:选择maven
jdk与java版本需要一致
二.引入依赖
注意:spring-boot版本选择2.3.2.RELEASE
<!--mp的依赖-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.1</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.spring4all</groupId>
<artifactId>swagger-spring-boot-starter</artifactId>
<version>1.9.1.RELEASE</version>
</dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>swagger-bootstrap-ui</artifactId>
<version>1.9.6</version>
</dependency>
<!--mp的代码生成器依赖-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.2</version>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.30</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
三.配置application.properties文件(必须为这个名字,也可新建与这个名字一样的yml文件,优先级低于properties)
server.port=这里的端口可以自己写
username,password选择自己的
server.port=8080
spring.datasource.druid.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.druid.username=root
spring.datasource.druid.password=****
spring.datasource.druid.url=jdbc:mysql://localhost:3306/keyboard?serverTimezone=Asia/Shanghai
spring.datasource.druid.initial-size=5
spring.datasource.druid.max-active=10
#??????????
mybatis-plus.mapper-locations=classpath:/mapper/*.xml
四.创建对应的目录
五.需要的注解
//主启动类的注解
@MapperScan(basePackages = "com.example.ceshi.dao")//包扫描
@SpringBootApplication
@Configuration
@EnableSwagger2//启动swagger2
分页插件的配置类
@Configuration
public class MyConfig {
/**
* 新的分页插件,一缓和二缓遵循mybatis的规则,需要设置 MybatisConfiguration#useDeprecatedExecutor = false
* 避免缓存出现问题(该属性会在旧插件移除后一同移除)
*/
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor(){
MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor(DbType.MYSQL);
mybatisPlusInterceptor.addInnerInterceptor(paginationInnerInterceptor);
return mybatisPlusInterceptor;
}
}
swagger2配置类
@org.springframework.context.annotation.Configuration
public class Configuration {
@Bean
public Docket docket(){
Docket docket = new Docket(DocumentationType.SWAGGER_2)
.apiInfo(getInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.example.ceshi.controller")).build();
return docket;
}
private ApiInfo getInfo(){
Contact DEFAULT_CONTACT = new Contact("au", "http://www.au.com", "22@qq.com");
ApiInfo info = new ApiInfo("这是swagger2", "阿诗丹顿", "v1.0", "http://www.jd.com",
DEFAULT_CONTACT, "Apache 2.0", "http://www.360buy.com", new ArrayList<VendorExtension>());
return info;
}
}
实体类的注解
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "advertise")//数据库表名
@ApiModel(value = "position")
public class Advertise {
@ApiModelProperty(value = "主键")//swagger2注解提示信息
@TableId(value = "id")//主键
private Integer id;
@TableField(value = "advame")//实体类与数据库中列不同名的列名
private String advname;
@TableField(value = "position_id")
private long positionId;
private long status;
@TableField(value = "order_count")
private long orderCount;
@TableField(exist = false)//@TableField(exist = false) 注解加载bean属性上,表示当前属性不是数据库的字段,但在项目中必须使用,这样在新增等使用bean的时候,mybatis-plus就会忽略这个,不会报错
private Position position;
private String pname;
private String description;
}
代码生成器
public class PracticeApplication {
public static void main(String[] args) {
FastAutoGenerator.create("url", "username", "password")
.globalConfig(builder -> {
builder.author("baomidou") // 设置作者
.enableSwagger() // 开启 swagger 模式
.fileOverride() // 覆盖已生成文件
.outputDir("D://"); // 指定输出目录
})
.dataSourceConfig(builder -> builder.typeConvertHandler((globalConfig, typeRegistry, metaInfo) -> {
int typeCode = metaInfo.getJdbcType().TYPE_CODE;
if (typeCode == Types.SMALLINT) {
// 自定义类型转换
return DbColumnType.INTEGER;
}
return typeRegistry.getColumnType(metaInfo);
}))
.packageConfig(builder -> {
builder.parent("com.baomidou.mybatisplus.samples.generator") // 设置父包名
.moduleName("system") // 设置父包模块名
.pathInfo(Collections.singletonMap(OutputFile.xml, "D://")); // 设置mapperXml生成路径
})
.strategyConfig(builder -> {
builder.addInclude("t_simple") // 设置需要生成的表名
.addTablePrefix("t_", "c_"); // 设置过滤表前缀
})
.templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
.execute();
}
}