构建前后端分离项目常用的代码
1.代码生成器
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 CodeGenerator {public static void main(String[] args) {String url = "jdbc:mysql://localhost:3306/数据库名?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8";String username = "用户名";String password = "密码";String moduleName = "sys"; // 表的前缀String mapperLocation = "E:\\boot+vue\\x-admin\\src\\main\\resources\\mapper\\" + moduleName;String tables = "x_user,x_role,x_menu,x_user_role,x_role_menu"; // 表名FastAutoGenerator.create(url, username, password).globalConfig(builder -> {builder.author("author") // 设置作者// .enableSwagger() // 开启 swagger 模式// .fileOverride() // 覆盖已生成文件.outputDir("E:\\boot+vue\\x-admin\\src\\main\\java"); // 指定输出目录}).packageConfig(builder -> {builder.parent("com.bo") // 设置父包名.moduleName(moduleName) // 设置父包模块名.pathInfo(Collections.singletonMap(OutputFile.xml, mapperLocation)); // 设置mapperXml生成路径}).strategyConfig(builder -> {// builder.mapperBuilder().enableMapperAnnotation().build(); //自动加mapper注解// builder.controllerBuilder().enableHyphenStyle().//开启驼峰转字符// enableRestStyle(); //生成RestController 控制器builder.addInclude(tables) // 设置需要生成的表名.addTablePrefix("x_"); // 设置过滤表前缀}).templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板.execute();}}
2.mybatisPlus分页拦截器
@Configurationpublic class MpConfig {@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));return interceptor;}}
3.跨域
@Configurationpublic class CorsConfig {// 当前跨域请求最大有效时长。这里默认1天private static final long MAX_AGE = 24 * 60 * 60;@Beanpublic CorsFilter corsFilter() {UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();CorsConfiguration corsConfiguration = new CorsConfiguration();corsConfiguration.addAllowedOrigin("http://localhost:8080"); // 1 设置访问源地址corsConfiguration.addAllowedHeader("*"); // 2 设置访问源请求头corsConfiguration.addAllowedMethod("*"); // 3 设置访问源请求方法corsConfiguration.setMaxAge(MAX_AGE);source.registerCorsConfiguration("/**", corsConfiguration); // 4 对接口配置跨域设置return new CorsFilter(source);}}
4.配置文件
server:port: 端口号spring:datasource:username: rootpassword: 数据库密码url: jdbc:mysql://localhost:3306/数据库名?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=false# 逻辑删除mybatis-plus:global-config:db-config:logic-delete-field: deleted logic-not-delete-value: 0logic-delete-value: 1type-aliases-package: com.bo.*.entity
5.一些常用依赖
<!-- mybatis-plus --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.2</version></dependency><!--Swagger整合--><dependency><groupId>io.springfox</groupId><artifactId>springfox-boot-starter</artifactId><version>3.0.0</version></dependency><!-- 导入与导出 --><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.7.20</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.1.2</version></dependency><!--jwt整合--><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>0.9.1</version></dependency><!--解决jwt报错问题--><dependency><groupId>javax.xml.bind</groupId><artifactId>jaxb-api</artifactId><version>2.3.1</version></dependency><!--lombok--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.16</version><scope>provided</scope></dependency><!-- 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><dependency><groupId>com.baomidou</groupId><!-- mybatis-plus代码生成器 --><artifactId>mybatis-plus-generator</artifactId><version>3.5.2</version></dependency><!-- freemarker :plus代码生成器需要用--><dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId></dependency><!--redis--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><!--fastjson--><dependency><groupId>com.alibaba.fastjson2</groupId><artifactId>fastjson2</artifactId><version>2.0.7</version></dependency>
6.Swagger 文档
@Configuration@EnableOpenApi@EnableWebMvcpublic class MySwaggerConfig {@Beanpublic Docket api(){return new Docket(DocumentationType.OAS_30).apiInfo(apiInfo()).select().apis(RequestHandlerSelectors.basePackage("com.bo")).paths(PathSelectors.any()).build().securitySchemes(Collections.singletonList(securityScheme())).securityContexts(Collections.singletonList(securityContext()));}private SecurityScheme securityScheme(){return new ApiKey("X-Token","X-Token","header");}private SecurityContext securityContext(){return SecurityContext.builder().securityReferences(defaultAuth()).forPaths(PathSelectors.regex("^(?!auth).*$")).build();}private List<SecurityReference> defaultAuth(){AuthorizationScope authorizationScope = new AuthorizationScope("global","accessEverything");AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];authorizationScopes[0] = authorizationScope;return Collections.singletonList(new SecurityReference("X-Token",authorizationScopes));}private ApiInfo apiInfo(){return new ApiInfoBuilder().title("员工管理系统接口文档").description("SpringBoot+Vue前后端分离项目实战").version("1.0").contact(new Contact("qc","http://www.qqcn.cn","qc@yun.com")).build();}}