一篇搞定SpringBoot后端框架搭建流程
一、项目初始化
1.idea创建springboot项目:2.7版本
2.pom依赖导入
<!-- web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- mysql -->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
</dependency>
<!-- mybatis-plus -->
<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>
<!-- freemarker -->
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
</dependency>
<!-- lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
</plugin>
</plugins>
</build>
3.application.yml
server:
port: 9999
spring:
datasource:
username: root
password: 123456
url: jdbc:mysql:///xdb
redis:
port:6379
host:localhost
logging:
level:
com.example: debug
4.测试
成功部署到9999端口上
二、Mybatis-plus代码生成
1、代码生成器生成代码
1.1选择这个快速生成的
package com.example.springadmin;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import java.util.Collections;
public class Code {
public static void main(String[] args) {
String url = "jdbc:mysql:///springboot";
String username = "root";
String password = "123456";
String author = "yezhaoxin";
String outputDir = "D:\\Code\\Java\\Spring-admin\\src\\main\\java";
String basePackage = "com.example";
String moduleName = "sys";
String mapperLocation = "D:\\Code\\Java\\Spring-admin\\src\\main\\resources\\mapper\\" + moduleName;
String tableName = "x_user,x_menu,x_role,x_role_menu,x_user_role";
String tablePrefix = "x_";
FastAutoGenerator.create(url, username, password)
.globalConfig(builder -> {
builder.author(author) // 设置作者
//.enableSwagger() // 开启 swagger 模式
//.fileOverride() // 覆盖已生成文件
.outputDir(outputDir); // 指定输出目录
})
.packageConfig(builder -> {
builder.parent(basePackage) // 设置父包名
.moduleName(moduleName) // 设置父包模块名
.pathInfo(Collections.singletonMap(OutputFile.xml, mapperLocation)); // 设置mapperXml生成路径
})
.strategyConfig(builder -> {
builder.addInclude(tableName) // 设置需要生成的表名
.addTablePrefix(tablePrefix); // 设置过滤表前缀
})
.templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
.execute();
}
}
2、启动类注解
@MapperScan("com.example.*.mapper")
3、测试
3.1在测试类中撰写方法测试
package com.example.springadmin;
import com.example.sys.entity.User;
import com.example.sys.mapper.UserMapper;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import javax.annotation.Resource;
import java.util.List;
@SpringBootTest
class SpringAdminApplicationTests {
@Resource
private UserMapper userMapper;
@Test
void testMapper() {
List<User> users = userMapper.selectList(null);
users.forEach(System.out::println);
}
}
测试截图,成功打印
3.2 在Controller层测试
package com.example;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@MapperScan("com.example.*.mapper")
@SpringBootApplication
public class Demo1Application {
public static void main(String[] args) {
SpringApplication.run(Demo1Application.class, args);
}
}
浏览器测试成功,URL查询打印
四、公共响应类
统一前后端数据的作用
新创建一个文件夹来控制相应数据。
package com.example.common.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Result<T> {
private Integer code;
private String message;
private T data;
public static <T> Result<T> success() {
return new Result<>(20000, "success", null);
}
public static <T> Result<T> success(T data) {
return new Result<>(20000, "success", data);
}
public static <T> Result<T> success(T data, String message) {
return new Result<>(20000, message, data);
}
public static <T> Result<T> success(String message) {
return new Result<>(20000, message, null);
}
public static <T> Result<T> fail() {
return new Result<>(20001, "fail", null);
}
public static <T> Result<T> fail(Integer code) {
return new Result<>(code, "fail", null);
}
public static <T> Result<T> fail(Integer code, String message) {
return new Result<>(code, message, null);
}
public static <T> Result<T> fail(String message) {
return new Result<>(20001, message, null);
}
}
成功将数据与前端相应