最新版——新手使用mybatis-plus 3.5.2并使用器代码生成器
第一步,pom文件引入依赖
主要引入mybatis-plus和代码生成器需要使用的freemaker依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.2</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.2</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter-test</artifactId>
<version>3.5.3.1</version>
</dependency>
<!--freemarker模板-->
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.32</version>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId>
<version>1.5.13</version>
</dependency>
注意:
-
springboot和mybatis-plus需要对应版本,建议去mybatis-plus官网查看。
-
本文使用的springboot和mybatis-plus都是最新版本:springboot 2.7.8,mybatis-plus3.5.2
-
如果不知道该使用啥版本,建议都选最新版本
-
mybatis-plus官网有详细指南,建议观看
第二步,配置
在application.properties或yml文件中配置:
# DataSourceProperties
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#这里把qa换成自己数据库名字
spring.datasource.url=jdbc:mysql://localhost:3306/qa?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false
#数据源配置
#username和password写自己数据库的
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.hikari.maximum-pool-size=15
spring.datasource.hikari.minimum-idle=5
spring.datasource.hikari.idle-timeout=30000
#mybatis-plus配置
#放mapper文件的具体位置
mybatis-plus.mapper-locations= classpath*:com/luo/forum/mapper/xml/*Mapper.xml
#给entity包取别名,这样在使用com.luo.forum.User等实体时可以直接写User
mybatis-plus.type-aliases-package=com.luo.forum.entity
#日志:开启这个日志后,回台控制台输出sql语句及查询结果
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
第三步,代码生成器
创建一个类:mygenerator
package com.luo.forum;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import com.baomidou.mybatisplus.generator.fill.Column;
import java.util.Collections;
public class MyGenerator {
private static final String projectPath = System.getProperty("user.dir");
private static final String url = "jdbc:mysql://127.0.0.1:3306/qa";//这里改为自己数据库名字
private static final String username = "root";//数据库用户名和密码
private static final String password = "123456";
private static final String parentPackageName = "com.luo.forum";//生成的mapper等文件夹放在哪个包下
private static final String writer = "lyy";//自己的名字
private static final String outPath = projectPath + "\\src\\main\\java\\";
private static final String mapperPath = projectPath + "\\src\\main\\java\\com\\luo\\forum\\mapper\\xml\\";//mapper.xml文件放的位置
public static void main(String[] args) {
String[] tableNames = {"user"};//数据库表名
MyGenerator.execute(tableNames);
}
public static void execute(String[] tableNames) {
FastAutoGenerator.create(url, username, password)
.globalConfig(builder -> {
builder.author(writer)
.enableSwagger()
.outputDir(outPath)
.disableOpenDir();
})
.packageConfig(builder -> {
builder.parent(parentPackageName)
.pathInfo(Collections.singletonMap(OutputFile.xml, mapperPath));
})
.strategyConfig(builder -> {
builder.addInclude(tableNames)
.addTablePrefix("t_")
//Service 层生成设置
.serviceBuilder()
.formatServiceFileName("%sService")
.formatServiceImplFileName("%sServiceImpl")
//Entity
.entityBuilder()
.entityBuilder().fileOverride()//表示再次生成会覆盖,建议entity和mapper层覆盖
.enableChainModel()
.enableLombok()
.enableTableFieldAnnotation()
.logicDeleteColumnName("deleted")
.logicDeletePropertyName("deleted")
.versionColumnName("version")
.versionPropertyName("version")
.addTableFills(new Column("create_Time", FieldFill.INSERT))
.addTableFills(new Column("update_Time", FieldFill.INSERT_UPDATE))
//controller
.controllerBuilder()
.enableRestStyle()//生成的controller自带@RestController注解
//mapper
.mapperBuilder()
.mapperBuilder().fileOverride();
})
.templateEngine(new FreemarkerTemplateEngine()) //使用freemaker模板引擎
.execute();
}
}
注意:
- 每次运行会为表生成mapper、service、entity和controller层代码,其中mapper层和entity层会覆盖之前生成的,改了表结构重新运行即可
- 如果需要自己写sql语句,在mapper和mapper.xml中编写,mapper层上要自己加上@Mapper注解,可能会扫描不到
- 自己的业务方法写在serviceImpl中