导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.23</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.0.5</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-generator -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.4.1</version>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.1</version>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.31</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.75</version>
</dependency>
编写代码生成器
public class CodeGenerator {
public static void main(String[] args) {
//创建自动生成对象
AutoGenerator autoGenerator = new AutoGenerator();
//添加全局配置
GlobalConfig globalConfig = new GlobalConfig();
//获取项目路径
String path = System.getProperty("user.dir");
//设置输出目录
globalConfig.setOutputDir(path + "/src/main/java");
globalConfig.setAuthor("immortal");
globalConfig.setOpen(false);
globalConfig.setFileOverride(false);
globalConfig.setServiceName("%sService");
globalConfig.setIdType(IdType.ID_WORKER);
globalConfig.setDateType(DateType.ONLY_DATE);
//swagger 配置
// globalConfig.setSwagger2(true);
//设置global
autoGenerator.setGlobalConfig(globalConfig);
DataSourceConfig dataSourceConfig = new DataSourceConfig();
dataSourceConfig.setUrl("jdbc:mysql://127.0.0.1:3306/mybatis-plus?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=false");
dataSourceConfig.setDriverName("com.mysql.cj.jdbc.Driver");
dataSourceConfig.setUsername("root");
dataSourceConfig.setPassword("123456");
dataSourceConfig.setDbType(DbType.MYSQL);
//设置数据源
autoGenerator.setDataSource(dataSourceConfig);
PackageConfig packageConfig = new PackageConfig();
packageConfig.setModuleName("blog");
packageConfig.setParent("com.immortal.mybatisplusgenerator");
packageConfig.setEntity("pojo");
packageConfig.setMapper("mapper");
packageConfig.setService("service");
packageConfig.setController("controller");
//设置包配置
autoGenerator.setPackageInfo(packageConfig);
// 策略配置
StrategyConfig strategy = new StrategyConfig();
//设置生成的表
strategy.setInclude("user");
//开启驼峰
strategy.setNaming(NamingStrategy.underline_to_camel);
strategy.setColumnNaming(NamingStrategy.underline_to_camel);
//lombok生成
strategy.setEntityLombokModel(true);
//伪删除字段
strategy.setLogicDeleteFieldName("deleted");
//设置填充属性
TableFill create_time = new TableFill("create_time", FieldFill.INSERT);
TableFill update_time = new TableFill("update_time", FieldFill.INSERT_UPDATE);
ArrayList<TableFill> tableFills = new ArrayList<TableFill>();
tableFills.add(create_time);
tableFills.add(update_time);
strategy.setTableFillList(tableFills);
//乐观锁字段
strategy.setVersionFieldName("version");
//设置配置策略
autoGenerator.setStrategy(strategy);
strategy.setRestControllerStyle(true);
strategy.setControllerMappingHyphenStyle(true);
//执行
autoGenerator.execute();
}
}
生成后的项目结构
测试 yaml 文件
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/mybatis-plus?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=false
username: root
password: 123456
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
global-config:
logic-delete-field: deleted
logic-delete-value: 1
logic-not-delete-value: 0
加上mybatis-plus 的配置类
@Configuration
public class MybatisPlusConfig {
//分页插件
@Bean
public PaginationInnerInterceptor paginationInterceptor(){
return new PaginationInnerInterceptor();
}
//乐观锁插件
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
mybatisPlusInterceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
return mybatisPlusInterceptor;
}
}
测试 controller
@RestController
@RequestMapping("/blog/user")
public class UserController {
@Autowired
UserService userService;
@RequestMapping("/list")
public String list(){
List<User> list = userService.list();
return JSON.toJSONString(list);
}
@RequestMapping("/update")
public String update(){
User user = new User();
user.setName("immortal");
user.setId(1L);
userService.updateById(user);
return "更新用户" + JSON.toJSONString(user);
}
@RequestMapping("/insert")
public String insert(){
User user = new User();
user.setName("test/" + UUID.randomUUID());
userService.save(user);
return "添加用户: " + JSON.toJSONString(user);
}
@RequestMapping("/delete/{id}")
public String delete(@PathVariable("id") long id){
if (id<=0){
return "error request";
}
if (null == userService.getById(id)){
return "does not exist";
}
userService.removeById(id);
return "用户已被删除!";
}
}
127.0.0.1:8080/blog/user/list 测试即可
原文:https://www.cnblogs.com/immortal-mode/p/14674419.html