9832 字
约 32 分钟
56
日志文件配置路径
2026-09-26
无标签
附录H 系统管理模块源码详解
模块概览(面向 0 基础读者):
- 提供数据字典、通用配置等基础管理能力。
- 暴露查询接口供后台管理及其它微服务复用。
- 支持分页、缓存等扩展,便于快速扩展系统配置。
核心目录:
xuecheng-plus-system/xuecheng-plus-system-api/src/main/java/com/xuecheng/system/api(尚未找到,检查路径)xuecheng-plus-system/xuecheng-plus-system-service/src/main/java/com/xuecheng/system/servicexuecheng-plus-system/xuecheng-plus-system-service/src/main/java/com/xuecheng/system/mapperxuecheng-plus-system/xuecheng-plus-system-model/src/main/java/com/xuecheng/system/modelxuecheng-plus-system/xuecheng-plus-system-api/src/main/resources
文件:xuecheng-plus-system/api/com/xuecheng/system/config/GlobalCorsConfig.java
package com.xuecheng.system.config; // 声明类所在的包路径
import org.springframework.context.annotation.Bean; // 导入 Bean 类
import org.springframework.context.annotation.Configuration; // 导入 Configuration 类
import org.springframework.web.cors.CorsConfiguration; // 导入 CorsConfiguration 类
import org.springframework.web.cors.UrlBasedCorsConfigurationSource; // 导入 UrlBasedCorsConfigurationSource 类
import org.springframework.web.filter.CorsFilter; // 导入 CorsFilter 类
/** // 保留原作者写的块注释
* @author Mr.M // 保留原作者写的块注释
* @version 1.0 // 保留原作者写的块注释
* @description TODO // 保留原作者写的块注释
* @date 2023/2/12 11:27 // 保留原作者写的块注释
*/ // 保留原作者写的块注释
@Configuration // 使用注解 @Configuration
public class GlobalCorsConfig { // 定义 class GlobalCorsConfig
@Bean // 使用注解 @Bean
public CorsFilter corsFilter() { // 定义方法 corsFilter(...)
CorsConfiguration config = new CorsConfiguration(); // 创建 CorsConfiguration 对象并赋值给 config
//允许白名单域名进行跨域调用 // 保留原作者写的行内注释
config.addAllowedOrigin("*"); // 执行语句
//允许跨越发送cookie // 保留原作者写的行内注释
config.setAllowCredentials(true); // 执行语句
//放行全部原始头信息 // 保留原作者写的行内注释
config.addAllowedHeader("*"); // 执行语句
//允许所有请求方法跨域调用 // 保留原作者写的行内注释
config.addAllowedMethod("*"); // 执行语句
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); // 创建 UrlBasedCorsConfigurationSource 对象并赋值给 source
source.registerCorsConfiguration("/**", config); // 执行语句
return new CorsFilter(source); // 返回 new CorsFilter(source)
} // 代码块结束
} // 代码块结束
文件:xuecheng-plus-system/api/com/xuecheng/system/config/LocalDateTimeConfig.java
package com.xuecheng.system.config; // 声明类所在的包路径
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer; // 导入 LocalDateTimeDeserializer 类
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer; // 导入 LocalDateTimeSerializer 类
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer; // 导入 Jackson2ObjectMapperBuilderCustomizer 类
import org.springframework.context.annotation.Bean; // 导入 Bean 类
import org.springframework.context.annotation.Configuration; // 导入 Configuration 类
import java.time.LocalDateTime; // 导入 LocalDateTime 类
import java.time.format.DateTimeFormatter; // 导入 DateTimeFormatter 类
@Configuration // 使用注解 @Configuration
public class LocalDateTimeConfig { // 定义 class LocalDateTimeConfig
/* // 保留原作者写的块注释
* 序列化内容 // 保留原作者写的块注释
* LocalDateTime -> String // 保留原作者写的块注释
* 服务端返回给客户端内容 // 保留原作者写的块注释
* */ // 保留原作者写的块注释
@Bean // 使用注解 @Bean
public LocalDateTimeSerializer localDateTimeSerializer() { // 定义方法 localDateTimeSerializer(...)
return new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); // 返回 new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))
} // 代码块结束
/* // 保留原作者写的块注释
* 反序列化内容 // 保留原作者写的块注释
* String -> LocalDateTime // 保留原作者写的块注释
* 客户端传入服务端数据 // 保留原作者写的块注释
* */ // 保留原作者写的块注释
@Bean // 使用注解 @Bean
public LocalDateTimeDeserializer localDateTimeDeserializer() { // 定义方法 localDateTimeDeserializer(...)
return new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); // 返回 new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))
} // 代码块结束
// 配置 // 保留原作者写的行内注释
@Bean // 使用注解 @Bean
public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() { // 定义方法 jackson2ObjectMapperBuilderCustomizer(...)
return builder -> { // 返回 builder -> {
builder.serializerByType(LocalDateTime.class, localDateTimeSerializer()); // 执行语句
builder.deserializerByType(LocalDateTime.class, localDateTimeDeserializer()); // 执行语句
}; // 执行语句
} // 代码块结束
} // 代码块结束
文件:xuecheng-plus-system/api/com/xuecheng/system/controller/DictionaryController.java
package com.xuecheng.system.controller; // 声明类所在的包路径
import com.xuecheng.system.model.po.Dictionary; // 导入 Dictionary 类
import com.xuecheng.system.service.DictionaryService; // 导入 DictionaryService 类
import lombok.extern.slf4j.Slf4j; // 导入 Slf4j 类
import org.springframework.beans.factory.annotation.Autowired; // 导入 Autowired 类
import org.springframework.web.bind.annotation.GetMapping; // 导入 GetMapping 类
import org.springframework.web.bind.annotation.PathVariable; // 导入 PathVariable 类
import org.springframework.web.bind.annotation.RestController; // 导入 RestController 类
import java.util.List; // 导入 List 类
/** // 保留原作者写的块注释
* <p> // 保留原作者写的块注释
* 数据字典 前端控制器 // 保留原作者写的块注释
* </p> // 保留原作者写的块注释
* // 保留原作者写的块注释
* @author itcast // 保留原作者写的块注释
*/ // 保留原作者写的块注释
@Slf4j // 使用注解 @Slf4j
@RestController // 使用注解 @RestController
public class DictionaryController { // 定义 class DictionaryController
@Autowired // 使用注解 @Autowired
private DictionaryService dictionaryService; // 执行语句
@GetMapping("/dictionary/all") // 使用注解 @GetMapping("/dictionary/all")
public List<Dictionary> queryAll() { // 定义方法 queryAll(...)
return dictionaryService.queryAll(); // 返回 dictionaryService.queryAll()
} // 代码块结束
@GetMapping("/dictionary/code/{code}") // 使用注解 @GetMapping("/dictionary/code/{code}")
public Dictionary getByCode(@PathVariable String code) { // 定义方法 getByCode(...)
return dictionaryService.getByCode(code); // 返回 dictionaryService.getByCode(code)
} // 代码块结束
} // 代码块结束
文件:xuecheng-plus-system/api/com/xuecheng/system/SystemApplication.java
package com.xuecheng.system; // 声明类所在的包路径
import com.spring4all.swagger.EnableSwagger2Doc; // 导入 EnableSwagger2Doc 类
import org.springframework.boot.SpringApplication; // 导入 SpringApplication 类
import org.springframework.boot.autoconfigure.SpringBootApplication; // 导入 SpringBootApplication 类
import org.springframework.scheduling.annotation.EnableScheduling; // 导入 EnableScheduling 类
/** // 保留原作者写的块注释
* <p> // 保留原作者写的块注释
* 系统管理启动类 // 保留原作者写的块注释
* </p> // 保留原作者写的块注释
* // 保留原作者写的块注释
* @Description: // 保留原作者写的块注释
*/ // 保留原作者写的块注释
@EnableScheduling // 使用注解 @EnableScheduling
@EnableSwagger2Doc // 使用注解 @EnableSwagger2Doc
@SpringBootApplication // 使用注解 @SpringBootApplication
public class SystemApplication { // 定义 class SystemApplication
public static void main(String[] args) { // 定义方法 main(...)
SpringApplication.run(SystemApplication.class,args); // 执行语句
} // 代码块结束
} // 代码块结束
文件:xuecheng-plus-system/api/resources/bootstrap.yml
server:
servlet:
context-path: /system
port: 63110
#微服务配置
spring:
application:
name: system-api
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.101.65:3306/xcplus_system?serverTimezone=UTC&userUnicode=true&useSSL=false&
username: root
password: mysql
cloud:
nacos:
server-addr: 192.168.101.65:8848
discovery:
namespace: dev402
group: xuecheng-plus-project
# 日志文件配置路径
logging:
config: classpath:log4j2-dev.xml
# swagger 文档配置
swagger:
title: "学成在线系统管理"
description: "系统管理接口"
base-package: com.xuecheng.system
enabled: true
version: 1.0.0
文件:xuecheng-plus-system/api/resources/log4j2-dev.xml
<?xml version="1.0" encoding="UTF-8"?>
<Configuration monitorInterval="180" packages="">
<properties>
<property name="logdir">logs</property>
<property name="PATTERN">%date{YYYY-MM-dd HH:mm:ss,SSS} %level [%thread][%file:%line] - %msg%n%throwable</property>
</properties>
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="${PATTERN}"/>
</Console>
<RollingFile name="ErrorAppender" fileName="${logdir}/error.log"
filePattern="${logdir}/$${date:yyyy-MM-dd}/error.%d{yyyy-MM-dd-HH}.log" append="true">
<PatternLayout pattern="${PATTERN}"/>
<ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY"/>
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true" />
</Policies>
</RollingFile>
<RollingFile name="DebugAppender" fileName="${logdir}/info.log"
filePattern="${logdir}/$${date:yyyy-MM-dd}/info.%d{yyyy-MM-dd-HH}.log" append="true">
<PatternLayout pattern="${PATTERN}"/>
<ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/>
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true" />
</Policies>
</RollingFile>
<!--异步appender-->
<Async name="AsyncAppender" includeLocation="true">
<AppenderRef ref="ErrorAppender"/>
<AppenderRef ref="DebugAppender"/>
</Async>
</Appenders>
<Loggers>
<!--过滤掉spring和mybatis的一些无用的debug信息-->
<logger name="org.springframework" level="INFO">
</logger>
<logger name="org.mybatis" level="INFO">
</logger>
<logger name="cn.itcast.wanxinp2p.consumer.mapper" level="DEBUG">
</logger>
<logger name="springfox" level="INFO">
</logger>
<logger name="org.apache.http" level="INFO">
</logger>
<logger name="com.netflix.discovery" level="INFO">
</logger>
<logger name="RocketmqCommon" level="INFO" >
</logger>
<logger name="RocketmqRemoting" level="INFO" >
</logger>
<logger name="RocketmqClient" level="WARN">
</logger>
<logger name="org.dromara.hmily" level="WARN">
</logger>
<logger name="org.dromara.hmily.lottery" level="WARN">
</logger>
<logger name="org.dromara.hmily.bonuspoint" level="WARN">
</logger>
<!--OFF 0-->
<!--FATAL 100-->
<!--ERROR 200-->
<!--WARN 300-->
<!--INFO 400-->
<!--DEBUG 500-->
<!--TRACE 600-->
<!--ALL Integer.MAX_VALUE-->
<Root level="DEBUG" includeLocation="true">
<AppenderRef ref="AsyncAppender"/>
<AppenderRef ref="Console"/>
<AppenderRef ref="DebugAppender"/>
</Root>
</Loggers>
</Configuration>
文件:xuecheng-plus-system/api_pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>xuecheng-plus-system</artifactId>
<groupId>com.xuecheng</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>xuecheng-plus-system-api</artifactId>
<name>xuecheng-plus-system-api</name>
<description>xuecheng-plus-system-api</description>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>com.xuecheng</groupId>
<artifactId>xuecheng-plus-system-model</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.xuecheng</groupId>
<artifactId>xuecheng-plus-system-service</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<!--cloud的基础环境包-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-context</artifactId>
</dependency>
<!-- Spring Boot 的 Spring Web MVC 集成 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<!-- Spring Boot 对 LocalDateTime
boot-starter-web自动引入
-->
<!-- <dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-parameter-names</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jdk8</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
</dependency>-->
<!--<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>-->
<!-- 排除 Spring Boot 依赖的日志包冲突 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- Spring Boot 集成 log4j2 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
<!-- Spring Boot 集成 swagger -->
<dependency>
<groupId>com.spring4all</groupId>
<artifactId>swagger-spring-boot-starter</artifactId>
</dependency>
</dependencies>
<build>
<finalName>${project.artifactId}-${project.version}</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring-boot.version}</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.2.2</version>
<configuration>
<!--修改imageName节点的内容,改为私有仓库地址和端口,再加上镜像id和 TAG,我们要直接传到私服-->
<!--配置最后生成的镜像名,docker images里的,我们这边取项目名:版本-->
<!--<imageName>${project.artifactId}:${project.version}</imageName>-->
<imageName>192.168.101.65:5000/${project.artifactId}:${project.version}</imageName>
<!--也可以通过以下方式定义image的tag信息。 -->
<!-- <imageTags>
<imageTag>${project.version}</imageTag>
<!–build 时强制覆盖 tag,配合 imageTags 使用–>
<forceTags>true</forceTags>
<!–build 完成后,push 指定 tag 的镜像,配合 imageTags 使用–>
<pushImageTag>true</pushImageTag>
</imageTags>-->
<baseImage>java:8u20</baseImage>
<maintainer>docker_maven [email protected]</maintainer>
<workdir>/root</workdir>
<cmd>["java", "-version"]</cmd>
<!--来指明Dockerfile文件的所在目录,如果配置了dockerDirectory则忽略baseImage,maintainer等配置-->
<!--<dockerDirectory>./</dockerDirectory>-->
<!--2375是docker的远程端口,插件生成镜像时连接docker,这里需要指定docker远程端口-->
<dockerHost>http://192.168.101.65:2375</dockerHost>
<!--入口点,project.build.finalName就是project标签下的build标签下 的filename标签内容,testDocker-->
<!--相当于启动容器后,会自动执行java -jar ...-->
<entryPoint>["java", "-Dfile.encoding=utf-8","-jar", "/root/${project.build.finalName}.jar"]</entryPoint>
<!--是否推送到docker私有仓库,旧版本插件要配置maven的settings文件。 -->
<pushImage>true</pushImage>
<registryUrl>192.168.101.65:5000</registryUrl> <!-- 这里是复制 jar 包到 docker 容器指定目录配置 -->
<resources>
<resource>
<targetPath>/root</targetPath>
<directory>${project.build.directory}</directory>
<!--把哪个文件上传到docker,相当于Dockerfile里的add app.jar /-->
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
</build>
</project>
文件:xuecheng-plus-system/model/com/xuecheng/system/model/po/Dictionary.java
package com.xuecheng.system.model.po; // 声明类所在的包路径
import com.baomidou.mybatisplus.annotation.IdType; // 导入 IdType 类
import com.baomidou.mybatisplus.annotation.TableId; // 导入 TableId 类
import com.baomidou.mybatisplus.annotation.TableName; // 导入 TableName 类
import lombok.Data; // 导入 Data 类
import java.io.Serializable; // 导入 Serializable 类
/** // 保留原作者写的块注释
* <p> // 保留原作者写的块注释
* 数据字典 // 保留原作者写的块注释
* </p> // 保留原作者写的块注释
* // 保留原作者写的块注释
* @author itcast // 保留原作者写的块注释
*/ // 保留原作者写的块注释
@Data // 使用注解 @Data
@TableName("dictionary") // 使用注解 @TableName("dictionary")
public class Dictionary implements Serializable { // 定义 class Dictionary
private static final long serialVersionUID = 1L; // 把 1L 赋值给 serialVersionUID
/** // 保留原作者写的块注释
* id标识 // 保留原作者写的块注释
*/ // 保留原作者写的块注释
@TableId(value = "id", type = IdType.AUTO) // 使用注解 @TableId(value = "id", type = IdType.AUTO)
private Long id; // 执行语句
/** // 保留原作者写的块注释
* 数据字典名称 // 保留原作者写的块注释
*/ // 保留原作者写的块注释
private String name; // 执行语句
/** // 保留原作者写的块注释
* 数据字典代码 // 保留原作者写的块注释
*/ // 保留原作者写的块注释
private String code; // 执行语句
/** // 保留原作者写的块注释
* 数据字典项--json格式 // 保留原作者写的块注释
[{ // 代码逻辑
"sd_name": "低级", // 代码逻辑
"sd_id": "200001", // 代码逻辑
"sd_status": "1" // 代码逻辑
}, { // 代码逻辑
"sd_name": "中级", // 代码逻辑
"sd_id": "200002", // 代码逻辑
"sd_status": "1" // 代码逻辑
}, { // 代码逻辑
"sd_name": "高级", // 代码逻辑
"sd_id": "200003", // 代码逻辑
"sd_status": "1" // 代码逻辑
}] // 代码逻辑
*/ // 保留原作者写的块注释
private String itemValues; // 执行语句
} // 代码块结束
文件:xuecheng-plus-system/model_pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>xuecheng-plus-system</artifactId>
<groupId>com.xuecheng</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>xuecheng-plus-system-model</artifactId>
<name>xuecheng-plus-system-model</name>
<description>xuecheng-plus-system-model</description>
<dependencies>
<dependency>
<groupId>com.xuecheng</groupId>
<artifactId>xuecheng-plus-base</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<!--存在mybatisplus注解添加相关注解保证不报错-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-annotation</artifactId>
<version>${mybatis-plus-boot-starter.version}</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-core</artifactId>
<version>${mybatis-plus-boot-starter.version}</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
</project>
文件:xuecheng-plus-system/pom.xml
<?xml version="1.0" encoding="UTF-8"?> <!-- XML 声明 -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <!-- SQL 语句片段 -->
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <!-- SQL 语句片段 -->
<modelVersion>4.0.0</modelVersion> <!-- SQL 语句片段 -->
<parent> <!-- SQL 语句片段 -->
<artifactId>xuecheng-plus-parent</artifactId> <!-- SQL 语句片段 -->
<groupId>com.xuecheng</groupId> <!-- SQL 语句片段 -->
<version>0.0.1-SNAPSHOT</version> <!-- SQL 语句片段 -->
<relativePath>../xuecheng-plus-parent</relativePath> <!-- SQL 语句片段 -->
</parent> <!-- SQL 语句片段 -->
<artifactId>xuecheng-plus-system</artifactId> <!-- SQL 语句片段 -->
<name>xuecheng-plus-system</name> <!-- SQL 语句片段 -->
<description>xuecheng-plus-system</description> <!-- SQL 语句片段 -->
<packaging>pom</packaging> <!-- SQL 语句片段 -->
<modules> <!-- SQL 语句片段 -->
<module>xuecheng-plus-system-api</module> <!-- SQL 语句片段 -->
<module>xuecheng-plus-system-service</module> <!-- SQL 语句片段 -->
<module>xuecheng-plus-system-model</module> <!-- SQL 语句片段 -->
</modules> <!-- SQL 语句片段 -->
</project> <!-- SQL 语句片段 -->
文件:xuecheng-plus-system/root_pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>xuecheng-plus-parent</artifactId>
<groupId>com.xuecheng</groupId>
<version>0.0.1-SNAPSHOT</version>
<relativePath>../xuecheng-plus-parent</relativePath>
</parent>
<artifactId>xuecheng-plus-system</artifactId>
<name>xuecheng-plus-system</name>
<description>xuecheng-plus-system</description>
<packaging>pom</packaging>
<modules>
<module>xuecheng-plus-system-api</module>
<module>xuecheng-plus-system-service</module>
<module>xuecheng-plus-system-model</module>
</modules>
</project>
文件:xuecheng-plus-system/service/com/xuecheng/system/config/MybatisPlusConfig.java
package com.xuecheng.system.config; // 声明类所在的包路径
import com.baomidou.mybatisplus.annotation.DbType; // 导入 DbType 类
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; // 导入 MybatisPlusInterceptor 类
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; // 导入 PaginationInnerInterceptor 类
import org.mybatis.spring.annotation.MapperScan; // 导入 MapperScan 类
import org.springframework.context.annotation.Bean; // 导入 Bean 类
import org.springframework.context.annotation.Configuration; // 导入 Configuration 类
/** // 保留原作者写的块注释
* <P> // 保留原作者写的块注释
* Mybatis-Plus 配置 // 保留原作者写的块注释
* </p> // 保留原作者写的块注释
*/ // 保留原作者写的块注释
@Configuration // 使用注解 @Configuration
@MapperScan("com.xuecheng.system.mapper") // 使用注解 @MapperScan("com.xuecheng.system.mapper")
public class MybatisPlusConfig { // 定义 class MybatisPlusConfig
/** // 保留原作者写的块注释
* 新的分页插件 // 保留原作者写的块注释
* 需要设置 MybatisConfiguration#useDeprecatedExecutor = false // 保留原作者写的块注释
* 避免缓存出现问题(该属性会在旧插件移除后一同移除) // 保留原作者写的块注释
*/ // 保留原作者写的块注释
@Bean // 使用注解 @Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() { // 定义方法 mybatisPlusInterceptor(...)
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); // 创建 MybatisPlusInterceptor 对象并赋值给 interceptor
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); // 执行语句
return interceptor; // 返回 interceptor
} // 代码块结束
} // 代码块结束
文件:xuecheng-plus-system/service/com/xuecheng/system/mapper/DictionaryMapper.java
package com.xuecheng.system.mapper; // 声明类所在的包路径
import com.baomidou.mybatisplus.core.mapper.BaseMapper; // 导入 BaseMapper 类
import com.xuecheng.system.model.po.Dictionary; // 导入 Dictionary 类
/** // 保留原作者写的块注释
* <p> // 保留原作者写的块注释
* 数据字典 Mapper 接口 // 保留原作者写的块注释
* </p> // 保留原作者写的块注释
* // 保留原作者写的块注释
* @author itcast // 保留原作者写的块注释
*/ // 保留原作者写的块注释
public interface DictionaryMapper extends BaseMapper<Dictionary> { // 定义 interface DictionaryMapper
} // 代码块结束
文件:xuecheng-plus-system/service/com/xuecheng/system/mapper/DictionaryMapper.xml
<?xml version="1.0" encoding="UTF-8"?> <!-- XML 声明 -->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- SQL 语句片段 -->
<mapper namespace="com.xuecheng.system.mapper.DictionaryMapper"> <!-- MyBatis 映射文件的根标签 -->
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.xuecheng.system.model.po.Dictionary"> <!-- 定义结果映射 -->
<id column="id" property="id" /> <!-- 主键列的映射规则 -->
<result column="name" property="name" /> <!-- 字段与属性的映射规则 -->
<result column="code" property="code" /> <!-- 字段与属性的映射规则 -->
<result column="item_values" property="itemValues" /> <!-- 字段与属性的映射规则 -->
</resultMap> <!-- 结束 resultMap 区块 -->
<!-- 通用查询结果列 -->
<sql id="Base_Column_List"> <!-- 声明可复用的 SQL 片段 -->
id, name, code, item_values <!-- SQL 语句片段 -->
</sql> <!-- 结束 SQL 片段 -->
</mapper> <!-- 结束 mapper 标签 -->
文件:xuecheng-plus-system/service/com/xuecheng/system/service/DictionaryService.java
package com.xuecheng.system.service; // 声明类所在的包路径
import com.baomidou.mybatisplus.extension.service.IService; // 导入 IService 类
import com.xuecheng.system.model.po.Dictionary; // 导入 Dictionary 类
import java.util.List; // 导入 List 类
/** // 保留原作者写的块注释
* <p> // 保留原作者写的块注释
* 数据字典 服务类 // 保留原作者写的块注释
* </p> // 保留原作者写的块注释
* // 保留原作者写的块注释
* @author itcast // 保留原作者写的块注释
* @since 2021-10-07 // 保留原作者写的块注释
*/ // 保留原作者写的块注释
public interface DictionaryService extends IService<Dictionary> { // 定义 interface DictionaryService
/** // 保留原作者写的块注释
* 查询所有数据字典内容 // 保留原作者写的块注释
* @return // 保留原作者写的块注释
*/ // 保留原作者写的块注释
List<Dictionary> queryAll(); // 执行语句
/** // 保留原作者写的块注释
* 根据code查询数据字典 // 保留原作者写的块注释
* @param code -- String 数据字典Code // 保留原作者写的块注释
* @return // 保留原作者写的块注释
*/ // 保留原作者写的块注释
Dictionary getByCode(String code); // 执行语句
} // 代码块结束
文件:xuecheng-plus-system/service/com/xuecheng/system/service/impl/DictionaryServiceImpl.java
package com.xuecheng.system.service.impl; // 声明类所在的包路径
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; // 导入 LambdaQueryWrapper 类
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; // 导入 ServiceImpl 类
import com.xuecheng.system.mapper.DictionaryMapper; // 导入 DictionaryMapper 类
import com.xuecheng.system.model.po.Dictionary; // 导入 Dictionary 类
import com.xuecheng.system.service.DictionaryService; // 导入 DictionaryService 类
import lombok.extern.slf4j.Slf4j; // 导入 Slf4j 类
import org.springframework.stereotype.Service; // 导入 Service 类
import java.util.List; // 导入 List 类
/** // 保留原作者写的块注释
* <p> // 保留原作者写的块注释
* 数据字典 服务实现类 // 保留原作者写的块注释
* </p> // 保留原作者写的块注释
* // 保留原作者写的块注释
* @author itcast // 保留原作者写的块注释
*/ // 保留原作者写的块注释
@Slf4j // 使用注解 @Slf4j
@Service // 使用注解 @Service
public class DictionaryServiceImpl extends ServiceImpl<DictionaryMapper, Dictionary> implements DictionaryService { // 定义 class DictionaryServiceImpl
@Override // 使用注解 @Override
public List<Dictionary> queryAll() { // 定义方法 queryAll(...)
List<Dictionary> list = this.list(); // 把 this.list() 的返回值赋给 list
return list; // 返回 list
} // 代码块结束
@Override // 使用注解 @Override
public Dictionary getByCode(String code) { // 定义方法 getByCode(...)
LambdaQueryWrapper<Dictionary> queryWrapper = new LambdaQueryWrapper<>(); // 创建 LambdaQueryWrapper<> 对象并赋值给 queryWrapper
queryWrapper.eq(Dictionary::getCode, code); // 执行语句
Dictionary dictionary = this.getOne(queryWrapper); // 把 this.getOne(queryWrapper) 赋值给 dictionary
return dictionary; // 返回 dictionary
} // 代码块结束
} // 代码块结束
文件:xuecheng-plus-system/service_pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>xuecheng-plus-system</artifactId>
<groupId>com.xuecheng</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>xuecheng-plus-system-service</artifactId>
<name>xuecheng-plus-system-service</name>
<description>xuecheng-plus-system-service</description>
<dependencies>
<dependency>
<groupId>com.xuecheng</groupId>
<artifactId>xuecheng-plus-system-model</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<!-- MySQL 驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!-- mybatis plus的依赖 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
</dependency>
<!-- Spring Boot 集成 Junit -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- 排除 Spring Boot 依赖的日志包冲突 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- Spring Boot 集成 log4j2 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
</dependencies>
</project>
文件:xuecheng-plus-system/xuecheng-plus-system-api/pom.xml
<?xml version="1.0" encoding="UTF-8"?> <!-- XML 声明 -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <!-- SQL 语句片段 -->
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <!-- SQL 语句片段 -->
<modelVersion>4.0.0</modelVersion> <!-- SQL 语句片段 -->
<parent> <!-- SQL 语句片段 -->
<artifactId>xuecheng-plus-system</artifactId> <!-- SQL 语句片段 -->
<groupId>com.xuecheng</groupId> <!-- SQL 语句片段 -->
<version>0.0.1-SNAPSHOT</version> <!-- SQL 语句片段 -->
</parent> <!-- SQL 语句片段 -->
<artifactId>xuecheng-plus-system-api</artifactId> <!-- SQL 语句片段 -->
<name>xuecheng-plus-system-api</name> <!-- SQL 语句片段 -->
<description>xuecheng-plus-system-api</description> <!-- SQL 语句片段 -->
<dependencies> <!-- SQL 语句片段 -->
<dependency> <!-- SQL 语句片段 -->
<groupId>com.alibaba.cloud</groupId> <!-- SQL 语句片段 -->
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <!-- SQL 语句片段 -->
</dependency> <!-- SQL 语句片段 -->
<dependency> <!-- SQL 语句片段 -->
<groupId>com.xuecheng</groupId> <!-- SQL 语句片段 -->
<artifactId>xuecheng-plus-system-model</artifactId> <!-- SQL 语句片段 -->
<version>0.0.1-SNAPSHOT</version> <!-- SQL 语句片段 -->
</dependency> <!-- SQL 语句片段 -->
<dependency> <!-- SQL 语句片段 -->
<groupId>com.xuecheng</groupId> <!-- SQL 语句片段 -->
<artifactId>xuecheng-plus-system-service</artifactId> <!-- SQL 语句片段 -->
<version>0.0.1-SNAPSHOT</version> <!-- SQL 语句片段 -->
</dependency> <!-- SQL 语句片段 -->
<!--cloud的基础环境包-->
<dependency> <!-- SQL 语句片段 -->
<groupId>org.springframework.cloud</groupId> <!-- SQL 语句片段 -->
<artifactId>spring-cloud-context</artifactId> <!-- SQL 语句片段 -->
</dependency> <!-- SQL 语句片段 -->
<!-- Spring Boot 的 Spring Web MVC 集成 -->
<dependency> <!-- SQL 语句片段 -->
<groupId>org.springframework.boot</groupId> <!-- SQL 语句片段 -->
<artifactId>spring-boot-starter-web</artifactId> <!-- SQL 语句片段 -->
</dependency> <!-- SQL 语句片段 -->
<dependency> <!-- SQL 语句片段 -->
<groupId>org.springframework.boot</groupId> <!-- SQL 语句片段 -->
<artifactId>spring-boot-starter-validation</artifactId> <!-- SQL 语句片段 -->
</dependency> <!-- SQL 语句片段 -->
<!-- Spring Boot 对 LocalDateTime
boot-starter-web自动引入 <!-- SQL 语句片段 -->
--> <!-- SQL 语句片段 -->
<!-- <dependency>
<groupId>com.fasterxml.jackson.module</groupId> <!-- SQL 语句片段 -->
<artifactId>jackson-module-parameter-names</artifactId> <!-- SQL 语句片段 -->
</dependency> <!-- SQL 语句片段 -->
<dependency> <!-- SQL 语句片段 -->
<groupId>com.fasterxml.jackson.datatype</groupId> <!-- SQL 语句片段 -->
<artifactId>jackson-datatype-jdk8</artifactId> <!-- SQL 语句片段 -->
</dependency> <!-- SQL 语句片段 -->
<dependency> <!-- SQL 语句片段 -->
<groupId>com.fasterxml.jackson.datatype</groupId> <!-- SQL 语句片段 -->
<artifactId>jackson-datatype-jsr310</artifactId> <!-- SQL 语句片段 -->
</dependency>--> <!-- SQL 语句片段 -->
<!--<dependency>
<groupId>org.apache.commons</groupId> <!-- SQL 语句片段 -->
<artifactId>commons-pool2</artifactId> <!-- SQL 语句片段 -->
</dependency>--> <!-- SQL 语句片段 -->
<!-- 排除 Spring Boot 依赖的日志包冲突 -->
<dependency> <!-- SQL 语句片段 -->
<groupId>org.springframework.boot</groupId> <!-- SQL 语句片段 -->
<artifactId>spring-boot-starter</artifactId> <!-- SQL 语句片段 -->
<exclusions> <!-- SQL 语句片段 -->
<exclusion> <!-- SQL 语句片段 -->
<groupId>org.springframework.boot</groupId> <!-- SQL 语句片段 -->
<artifactId>spring-boot-starter-logging</artifactId> <!-- SQL 语句片段 -->
</exclusion> <!-- SQL 语句片段 -->
</exclusions> <!-- SQL 语句片段 -->
</dependency> <!-- SQL 语句片段 -->
<!-- Spring Boot 集成 log4j2 -->
<dependency> <!-- SQL 语句片段 -->
<groupId>org.springframework.boot</groupId> <!-- SQL 语句片段 -->
<artifactId>spring-boot-starter-log4j2</artifactId> <!-- SQL 语句片段 -->
</dependency> <!-- SQL 语句片段 -->
<!-- Spring Boot 集成 swagger -->
<dependency> <!-- SQL 语句片段 -->
<groupId>com.spring4all</groupId> <!-- SQL 语句片段 -->
<artifactId>swagger-spring-boot-starter</artifactId> <!-- SQL 语句片段 -->
</dependency> <!-- SQL 语句片段 -->
</dependencies> <!-- SQL 语句片段 -->
<build> <!-- SQL 语句片段 -->
<finalName>${project.artifactId}-${project.version}</finalName> <!-- SQL 语句片段 -->
<plugins> <!-- SQL 语句片段 -->
<plugin> <!-- SQL 语句片段 -->
<groupId>org.springframework.boot</groupId> <!-- SQL 语句片段 -->
<artifactId>spring-boot-maven-plugin</artifactId> <!-- SQL 语句片段 -->
<version>${spring-boot.version}</version> <!-- SQL 语句片段 -->
<executions> <!-- SQL 语句片段 -->
<execution> <!-- SQL 语句片段 -->
<goals> <!-- SQL 语句片段 -->
<goal>repackage</goal> <!-- SQL 语句片段 -->
</goals> <!-- SQL 语句片段 -->
</execution> <!-- SQL 语句片段 -->
</executions> <!-- SQL 语句片段 -->
</plugin> <!-- SQL 语句片段 -->
<plugin> <!-- SQL 语句片段 -->
<groupId>com.spotify</groupId> <!-- SQL 语句片段 -->
<artifactId>docker-maven-plugin</artifactId> <!-- SQL 语句片段 -->
<version>1.2.2</version> <!-- SQL 语句片段 -->
<configuration> <!-- SQL 语句片段 -->
<!--修改imageName节点的内容,改为私有仓库地址和端口,再加上镜像id和 TAG,我们要直接传到私服-->
<!--配置最后生成的镜像名,docker images里的,我们这边取项目名:版本-->
<!--<imageName>${project.artifactId}:${project.version}</imageName>-->
<imageName>192.168.101.65:5000/${project.artifactId}:${project.version}</imageName> <!-- SQL 语句片段 -->
<!--也可以通过以下方式定义image的tag信息。 -->
<!-- <imageTags>
<imageTag>${project.version}</imageTag> <!-- SQL 语句片段 -->
<!–build 时强制覆盖 tag,配合 imageTags 使用–> <!-- SQL 语句片段 -->
<forceTags>true</forceTags> <!-- SQL 语句片段 -->
<!–build 完成后,push 指定 tag 的镜像,配合 imageTags 使用–> <!-- SQL 语句片段 -->
<pushImageTag>true</pushImageTag> <!-- SQL 语句片段 -->
</imageTags>--> <!-- SQL 语句片段 -->
<baseImage>java:8u20</baseImage> <!-- SQL 语句片段 -->
<maintainer>docker_maven [email protected]</maintainer> <!-- SQL 语句片段 -->
<workdir>/root</workdir> <!-- SQL 语句片段 -->
<cmd>["java", "-version"]</cmd> <!-- SQL 语句片段 -->
<!--来指明Dockerfile文件的所在目录,如果配置了dockerDirectory则忽略baseImage,maintainer等配置-->
<!--<dockerDirectory>./</dockerDirectory>-->
<!--2375是docker的远程端口,插件生成镜像时连接docker,这里需要指定docker远程端口-->
<dockerHost>http://192.168.101.65:2375</dockerHost> <!-- SQL 语句片段 -->
<!--入口点,project.build.finalName就是project标签下的build标签下 的filename标签内容,testDocker-->
<!--相当于启动容器后,会自动执行java -jar ...-->
<entryPoint>["java", "-Dfile.encoding=utf-8","-jar", "/root/${project.build.finalName}.jar"]</entryPoint> <!-- SQL 语句片段 -->
<!--是否推送到docker私有仓库,旧版本插件要配置maven的settings文件。 -->
<pushImage>true</pushImage> <!-- SQL 语句片段 -->
<registryUrl>192.168.101.65:5000</registryUrl> <!-- 这里是复制 jar 包到 docker 容器指定目录配置 --> <!-- SQL 语句片段 -->
<resources> <!-- SQL 语句片段 -->
<resource> <!-- SQL 语句片段 -->
<targetPath>/root</targetPath> <!-- SQL 语句片段 -->
<directory>${project.build.directory}</directory> <!-- SQL 语句片段 -->
<!--把哪个文件上传到docker,相当于Dockerfile里的add app.jar /-->
<include>${project.build.finalName}.jar</include> <!-- 引用公共 SQL 片段 -->
</resource> <!-- SQL 语句片段 -->
</resources> <!-- SQL 语句片段 -->
</configuration> <!-- SQL 语句片段 -->
</plugin> <!-- SQL 语句片段 -->
</plugins> <!-- SQL 语句片段 -->
</build> <!-- SQL 语句片段 -->
</project> <!-- SQL 语句片段 -->
文件:xuecheng-plus-system/xuecheng-plus-system-api/src/main/java/com/xuecheng/system/config/GlobalCorsConfig.java
package com.xuecheng.system.config; // 声明类所在的包路径
import org.springframework.context.annotation.Bean; // 导入 Bean 类
import org.springframework.context.annotation.Configuration; // 导入 Configuration 类
import org.springframework.web.cors.CorsConfiguration; // 导入 CorsConfiguration 类
import org.springframework.web.cors.UrlBasedCorsConfigurationSource; // 导入 UrlBasedCorsConfigurationSource 类
import org.springframework.web.filter.CorsFilter; // 导入 CorsFilter 类
/** // 保留原作者写的块注释
* @author Mr.M // 保留原作者写的块注释
* @version 1.0 // 保留原作者写的块注释
* @description TODO // 保留原作者写的块注释
* @date 2023/2/12 11:27 // 保留原作者写的块注释
*/ // 保留原作者写的块注释
@Configuration // 使用注解 @Configuration
public class GlobalCorsConfig { // 定义 class GlobalCorsConfig
@Bean // 使用注解 @Bean
public CorsFilter corsFilter() { // 定义方法 corsFilter(...)
CorsConfiguration config = new CorsConfiguration(); // 创建 CorsConfiguration 对象并赋值给 config
//允许白名单域名进行跨域调用 // 保留原作者写的行内注释
config.addAllowedOrigin("*"); // 执行语句
//允许跨越发送cookie // 保留原作者写的行内注释
config.setAllowCredentials(true); // 执行语句
//放行全部原始头信息 // 保留原作者写的行内注释
config.addAllowedHeader("*"); // 执行语句
//允许所有请求方法跨域调用 // 保留原作者写的行内注释
config.addAllowedMethod("*"); // 执行语句
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); // 创建 UrlBasedCorsConfigurationSource 对象并赋值给 source
source.registerCorsConfiguration("/**", config); // 执行语句
return new CorsFilter(source); // 返回 new CorsFilter(source)
} // 代码块结束
} // 代码块结束
文件:xuecheng-plus-system/xuecheng-plus-system-api/src/main/java/com/xuecheng/system/config/LocalDateTimeConfig.java
package com.xuecheng.system.config; // 声明类所在的包路径
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer; // 导入 LocalDateTimeDeserializer 类
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer; // 导入 LocalDateTimeSerializer 类
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer; // 导入 Jackson2ObjectMapperBuilderCustomizer 类
import org.springframework.context.annotation.Bean; // 导入 Bean 类
import org.springframework.context.annotation.Configuration; // 导入 Configuration 类
import java.time.LocalDateTime; // 导入 LocalDateTime 类
import java.time.format.DateTimeFormatter; // 导入 DateTimeFormatter 类
@Configuration // 使用注解 @Configuration
public class LocalDateTimeConfig { // 定义 class LocalDateTimeConfig
/* // 保留原作者写的块注释
* 序列化内容 // 保留原作者写的块注释
* LocalDateTime -> String // 保留原作者写的块注释
* 服务端返回给客户端内容 // 保留原作者写的块注释
* */ // 保留原作者写的块注释
@Bean // 使用注解 @Bean
public LocalDateTimeSerializer localDateTimeSerializer() { // 定义方法 localDateTimeSerializer(...)
return new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); // 返回 new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))
} // 代码块结束
/* // 保留原作者写的块注释
* 反序列化内容 // 保留原作者写的块注释
* String -> LocalDateTime // 保留原作者写的块注释
* 客户端传入服务端数据 // 保留原作者写的块注释
* */ // 保留原作者写的块注释
@Bean // 使用注解 @Bean
public LocalDateTimeDeserializer localDateTimeDeserializer() { // 定义方法 localDateTimeDeserializer(...)
return new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); // 返回 new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))
} // 代码块结束
// 配置 // 保留原作者写的行内注释
@Bean // 使用注解 @Bean
public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() { // 定义方法 jackson2ObjectMapperBuilderCustomizer(...)
return builder -> { // 返回 builder -> {
builder.serializerByType(LocalDateTime.class, localDateTimeSerializer()); // 执行语句
builder.deserializerByType(LocalDateTime.class, localDateTimeDeserializer()); // 执行语句
}; // 执行语句
} // 代码块结束
} // 代码块结束
文件:xuecheng-plus-system/xuecheng-plus-system-api/src/main/java/com/xuecheng/system/controller/DictionaryController.java
package com.xuecheng.system.controller; // 声明类所在的包路径
import com.xuecheng.system.model.po.Dictionary; // 导入 Dictionary 类
import com.xuecheng.system.service.DictionaryService; // 导入 DictionaryService 类
import lombok.extern.slf4j.Slf4j; // 导入 Slf4j 类
import org.springframework.beans.factory.annotation.Autowired; // 导入 Autowired 类
import org.springframework.web.bind.annotation.GetMapping; // 导入 GetMapping 类
import org.springframework.web.bind.annotation.PathVariable; // 导入 PathVariable 类
import org.springframework.web.bind.annotation.RestController; // 导入 RestController 类
import java.util.List; // 导入 List 类
/** // 保留原作者写的块注释
* <p> // 保留原作者写的块注释
* 数据字典 前端控制器 // 保留原作者写的块注释
* </p> // 保留原作者写的块注释
* // 保留原作者写的块注释
* @author itcast // 保留原作者写的块注释
*/ // 保留原作者写的块注释
@Slf4j // 使用注解 @Slf4j
@RestController // 使用注解 @RestController
public class DictionaryController { // 定义 class DictionaryController
@Autowired // 使用注解 @Autowired
private DictionaryService dictionaryService; // 执行语句
@GetMapping("/dictionary/all") // 使用注解 @GetMapping("/dictionary/all")
public List<Dictionary> queryAll() { // 定义方法 queryAll(...)
return dictionaryService.queryAll(); // 返回 dictionaryService.queryAll()
} // 代码块结束
@GetMapping("/dictionary/code/{code}") // 使用注解 @GetMapping("/dictionary/code/{code}")
public Dictionary getByCode(@PathVariable String code) { // 定义方法 getByCode(...)
return dictionaryService.getByCode(code); // 返回 dictionaryService.getByCode(code)
} // 代码块结束
} // 代码块结束
文件:xuecheng-plus-system/xuecheng-plus-system-api/src/main/java/com/xuecheng/system/SystemApplication.java
package com.xuecheng.system; // 声明类所在的包路径
import com.spring4all.swagger.EnableSwagger2Doc; // 导入 EnableSwagger2Doc 类
import org.springframework.boot.SpringApplication; // 导入 SpringApplication 类
import org.springframework.boot.autoconfigure.SpringBootApplication; // 导入 SpringBootApplication 类
import org.springframework.scheduling.annotation.EnableScheduling; // 导入 EnableScheduling 类
/** // 保留原作者写的块注释
* <p> // 保留原作者写的块注释
* 系统管理启动类 // 保留原作者写的块注释
* </p> // 保留原作者写的块注释
* // 保留原作者写的块注释
* @Description: // 保留原作者写的块注释
*/ // 保留原作者写的块注释
@EnableScheduling // 使用注解 @EnableScheduling
@EnableSwagger2Doc // 使用注解 @EnableSwagger2Doc
@SpringBootApplication // 使用注解 @SpringBootApplication
public class SystemApplication { // 定义 class SystemApplication
public static void main(String[] args) { // 定义方法 main(...)
SpringApplication.run(SystemApplication.class,args); // 执行语句
} // 代码块结束
} // 代码块结束
文件:xuecheng-plus-system/xuecheng-plus-system-api/src/main/resources/bootstrap.yml
server:
servlet:
context-path: /system
port: 63110
#微服务配置
spring:
application:
name: system-api
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.101.65:3306/xcplus_system?serverTimezone=UTC&userUnicode=true&useSSL=false&
username: root
password: mysql
cloud:
nacos:
server-addr: 192.168.101.65:8848
discovery:
namespace: dev402
group: xuecheng-plus-project
# 日志文件配置路径
logging:
config: classpath:log4j2-dev.xml
# swagger 文档配置
swagger:
title: "学成在线系统管理"
description: "系统管理接口"
base-package: com.xuecheng.system
enabled: true
version: 1.0.0
文件:xuecheng-plus-system/xuecheng-plus-system-api/src/main/resources/log4j2-dev.xml
<?xml version="1.0" encoding="UTF-8"?> <!-- XML 声明 -->
<Configuration monitorInterval="180" packages=""> <!-- SQL 语句片段 -->
<properties> <!-- SQL 语句片段 -->
<property name="logdir">logs</property> <!-- SQL 语句片段 -->
<property name="PATTERN">%date{YYYY-MM-dd HH:mm:ss,SSS} %level [%thread][%file:%line] - %msg%n%throwable</property> <!-- SQL 语句片段 -->
</properties> <!-- SQL 语句片段 -->
<Appenders> <!-- SQL 语句片段 -->
<Console name="Console" target="SYSTEM_OUT"> <!-- SQL 语句片段 -->
<PatternLayout pattern="${PATTERN}"/> <!-- SQL 语句片段 -->
</Console> <!-- SQL 语句片段 -->
<RollingFile name="ErrorAppender" fileName="${logdir}/error.log" <!-- SQL 语句片段 -->
filePattern="${logdir}/$${date:yyyy-MM-dd}/error.%d{yyyy-MM-dd-HH}.log" append="true"> <!-- SQL 语句片段 -->
<PatternLayout pattern="${PATTERN}"/> <!-- SQL 语句片段 -->
<ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY"/> <!-- SQL 语句片段 -->
<Policies> <!-- SQL 语句片段 -->
<TimeBasedTriggeringPolicy interval="1" modulate="true" /> <!-- SQL 语句片段 -->
</Policies> <!-- SQL 语句片段 -->
</RollingFile> <!-- SQL 语句片段 -->
<RollingFile name="DebugAppender" fileName="${logdir}/info.log" <!-- SQL 语句片段 -->
filePattern="${logdir}/$${date:yyyy-MM-dd}/info.%d{yyyy-MM-dd-HH}.log" append="true"> <!-- SQL 语句片段 -->
<PatternLayout pattern="${PATTERN}"/> <!-- SQL 语句片段 -->
<ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/> <!-- SQL 语句片段 -->
<Policies> <!-- SQL 语句片段 -->
<TimeBasedTriggeringPolicy interval="1" modulate="true" /> <!-- SQL 语句片段 -->
</Policies> <!-- SQL 语句片段 -->
</RollingFile> <!-- SQL 语句片段 -->
<!--异步appender-->
<Async name="AsyncAppender" includeLocation="true"> <!-- SQL 语句片段 -->
<AppenderRef ref="ErrorAppender"/> <!-- SQL 语句片段 -->
<AppenderRef ref="DebugAppender"/> <!-- SQL 语句片段 -->
</Async> <!-- SQL 语句片段 -->
</Appenders> <!-- SQL 语句片段 -->
<Loggers> <!-- SQL 语句片段 -->
<!--过滤掉spring和mybatis的一些无用的debug信息-->
<logger name="org.springframework" level="INFO"> <!-- SQL 语句片段 -->
</logger> <!-- SQL 语句片段 -->
<logger name="org.mybatis" level="INFO"> <!-- SQL 语句片段 -->
</logger> <!-- SQL 语句片段 -->
<logger name="cn.itcast.wanxinp2p.consumer.mapper" level="DEBUG"> <!-- SQL 语句片段 -->
</logger> <!-- SQL 语句片段 -->
<logger name="springfox" level="INFO"> <!-- SQL 语句片段 -->
</logger> <!-- SQL 语句片段 -->
<logger name="org.apache.http" level="INFO"> <!-- SQL 语句片段 -->
</logger> <!-- SQL 语句片段 -->
<logger name="com.netflix.discovery" level="INFO"> <!-- SQL 语句片段 -->
</logger> <!-- SQL 语句片段 -->
<logger name="RocketmqCommon" level="INFO" > <!-- SQL 语句片段 -->
</logger> <!-- SQL 语句片段 -->
<logger name="RocketmqRemoting" level="INFO" > <!-- SQL 语句片段 -->
</logger> <!-- SQL 语句片段 -->
<logger name="RocketmqClient" level="WARN"> <!-- SQL 语句片段 -->
</logger> <!-- SQL 语句片段 -->
<logger name="org.dromara.hmily" level="WARN"> <!-- SQL 语句片段 -->
</logger> <!-- SQL 语句片段 -->
<logger name="org.dromara.hmily.lottery" level="WARN"> <!-- SQL 语句片段 -->
</logger> <!-- SQL 语句片段 -->
<logger name="org.dromara.hmily.bonuspoint" level="WARN"> <!-- SQL 语句片段 -->
</logger> <!-- SQL 语句片段 -->
<!--OFF 0-->
<!--FATAL 100-->
<!--ERROR 200-->
<!--WARN 300-->
<!--INFO 400-->
<!--DEBUG 500-->
<!--TRACE 600-->
<!--ALL Integer.MAX_VALUE-->
<Root level="DEBUG" includeLocation="true"> <!-- SQL 语句片段 -->
<AppenderRef ref="AsyncAppender"/> <!-- SQL 语句片段 -->
<AppenderRef ref="Console"/> <!-- SQL 语句片段 -->
<AppenderRef ref="DebugAppender"/> <!-- SQL 语句片段 -->
</Root> <!-- SQL 语句片段 -->
</Loggers> <!-- SQL 语句片段 -->
</Configuration> <!-- SQL 语句片段 -->
文件:xuecheng-plus-system/xuecheng-plus-system-model/pom.xml
<?xml version="1.0" encoding="UTF-8"?> <!-- XML 声明 -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <!-- SQL 语句片段 -->
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <!-- SQL 语句片段 -->
<modelVersion>4.0.0</modelVersion> <!-- SQL 语句片段 -->
<parent> <!-- SQL 语句片段 -->
<artifactId>xuecheng-plus-system</artifactId> <!-- SQL 语句片段 -->
<groupId>com.xuecheng</groupId> <!-- SQL 语句片段 -->
<version>0.0.1-SNAPSHOT</version> <!-- SQL 语句片段 -->
</parent> <!-- SQL 语句片段 -->
<artifactId>xuecheng-plus-system-model</artifactId> <!-- SQL 语句片段 -->
<name>xuecheng-plus-system-model</name> <!-- SQL 语句片段 -->
<description>xuecheng-plus-system-model</description> <!-- SQL 语句片段 -->
<dependencies> <!-- SQL 语句片段 -->
<dependency> <!-- SQL 语句片段 -->
<groupId>com.xuecheng</groupId> <!-- SQL 语句片段 -->
<artifactId>xuecheng-plus-base</artifactId> <!-- SQL 语句片段 -->
<version>0.0.1-SNAPSHOT</version> <!-- SQL 语句片段 -->
</dependency> <!-- SQL 语句片段 -->
<!--存在mybatisplus注解添加相关注解保证不报错-->
<dependency> <!-- SQL 语句片段 -->
<groupId>com.baomidou</groupId> <!-- SQL 语句片段 -->
<artifactId>mybatis-plus-annotation</artifactId> <!-- SQL 语句片段 -->
<version>${mybatis-plus-boot-starter.version}</version> <!-- SQL 语句片段 -->
</dependency> <!-- SQL 语句片段 -->
<dependency> <!-- SQL 语句片段 -->
<groupId>com.baomidou</groupId> <!-- SQL 语句片段 -->
<artifactId>mybatis-plus-core</artifactId> <!-- SQL 语句片段 -->
<version>${mybatis-plus-boot-starter.version}</version> <!-- SQL 语句片段 -->
</dependency> <!-- SQL 语句片段 -->
<dependency> <!-- SQL 语句片段 -->
<groupId>org.projectlombok</groupId> <!-- SQL 语句片段 -->
<artifactId>lombok</artifactId> <!-- SQL 语句片段 -->
</dependency> <!-- SQL 语句片段 -->
</dependencies> <!-- SQL 语句片段 -->
</project> <!-- SQL 语句片段 -->
文件:xuecheng-plus-system/xuecheng-plus-system-model/src/main/java/com/xuecheng/system/model/po/Dictionary.java
package com.xuecheng.system.model.po; // 声明类所在的包路径
import com.baomidou.mybatisplus.annotation.IdType; // 导入 IdType 类
import com.baomidou.mybatisplus.annotation.TableId; // 导入 TableId 类
import com.baomidou.mybatisplus.annotation.TableName; // 导入 TableName 类
import lombok.Data; // 导入 Data 类
import java.io.Serializable; // 导入 Serializable 类
/** // 保留原作者写的块注释
* <p> // 保留原作者写的块注释
* 数据字典 // 保留原作者写的块注释
* </p> // 保留原作者写的块注释
* // 保留原作者写的块注释
* @author itcast // 保留原作者写的块注释
*/ // 保留原作者写的块注释
@Data // 使用注解 @Data
@TableName("dictionary") // 使用注解 @TableName("dictionary")
public class Dictionary implements Serializable { // 定义 class Dictionary
private static final long serialVersionUID = 1L; // 把 1L 赋值给 serialVersionUID
/** // 保留原作者写的块注释
* id标识 // 保留原作者写的块注释
*/ // 保留原作者写的块注释
@TableId(value = "id", type = IdType.AUTO) // 使用注解 @TableId(value = "id", type = IdType.AUTO)
private Long id; // 执行语句
/** // 保留原作者写的块注释
* 数据字典名称 // 保留原作者写的块注释
*/ // 保留原作者写的块注释
private String name; // 执行语句
/** // 保留原作者写的块注释
* 数据字典代码 // 保留原作者写的块注释
*/ // 保留原作者写的块注释
private String code; // 执行语句
/** // 保留原作者写的块注释
* 数据字典项--json格式 // 保留原作者写的块注释
[{ // 代码逻辑
"sd_name": "低级", // 代码逻辑
"sd_id": "200001", // 代码逻辑
"sd_status": "1" // 代码逻辑
}, { // 代码逻辑
"sd_name": "中级", // 代码逻辑
"sd_id": "200002", // 代码逻辑
"sd_status": "1" // 代码逻辑
}, { // 代码逻辑
"sd_name": "高级", // 代码逻辑
"sd_id": "200003", // 代码逻辑
"sd_status": "1" // 代码逻辑
}] // 代码逻辑
*/ // 保留原作者写的块注释
private String itemValues; // 执行语句
} // 代码块结束
文件:xuecheng-plus-system/xuecheng-plus-system-service/pom.xml
<?xml version="1.0" encoding="UTF-8"?> <!-- XML 声明 -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <!-- SQL 语句片段 -->
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <!-- SQL 语句片段 -->
<modelVersion>4.0.0</modelVersion> <!-- SQL 语句片段 -->
<parent> <!-- SQL 语句片段 -->
<artifactId>xuecheng-plus-system</artifactId> <!-- SQL 语句片段 -->
<groupId>com.xuecheng</groupId> <!-- SQL 语句片段 -->
<version>0.0.1-SNAPSHOT</version> <!-- SQL 语句片段 -->
</parent> <!-- SQL 语句片段 -->
<artifactId>xuecheng-plus-system-service</artifactId> <!-- SQL 语句片段 -->
<name>xuecheng-plus-system-service</name> <!-- SQL 语句片段 -->
<description>xuecheng-plus-system-service</description> <!-- SQL 语句片段 -->
<dependencies> <!-- SQL 语句片段 -->
<dependency> <!-- SQL 语句片段 -->
<groupId>com.xuecheng</groupId> <!-- SQL 语句片段 -->
<artifactId>xuecheng-plus-system-model</artifactId> <!-- SQL 语句片段 -->
<version>0.0.1-SNAPSHOT</version> <!-- SQL 语句片段 -->
</dependency> <!-- SQL 语句片段 -->
<!-- MySQL 驱动 -->
<dependency> <!-- SQL 语句片段 -->
<groupId>mysql</groupId> <!-- SQL 语句片段 -->
<artifactId>mysql-connector-java</artifactId> <!-- SQL 语句片段 -->
<scope>runtime</scope> <!-- SQL 语句片段 -->
</dependency> <!-- SQL 语句片段 -->
<!-- mybatis plus的依赖 -->
<dependency> <!-- SQL 语句片段 -->
<groupId>com.baomidou</groupId> <!-- SQL 语句片段 -->
<artifactId>mybatis-plus-boot-starter</artifactId> <!-- SQL 语句片段 -->
</dependency> <!-- SQL 语句片段 -->
<!-- Spring Boot 集成 Junit -->
<dependency> <!-- SQL 语句片段 -->
<groupId>org.springframework.boot</groupId> <!-- SQL 语句片段 -->
<artifactId>spring-boot-starter-test</artifactId> <!-- SQL 语句片段 -->
<scope>test</scope> <!-- SQL 语句片段 -->
</dependency> <!-- SQL 语句片段 -->
<!-- 排除 Spring Boot 依赖的日志包冲突 -->
<dependency> <!-- SQL 语句片段 -->
<groupId>org.springframework.boot</groupId> <!-- SQL 语句片段 -->
<artifactId>spring-boot-starter</artifactId> <!-- SQL 语句片段 -->
<exclusions> <!-- SQL 语句片段 -->
<exclusion> <!-- SQL 语句片段 -->
<groupId>org.springframework.boot</groupId> <!-- SQL 语句片段 -->
<artifactId>spring-boot-starter-logging</artifactId> <!-- SQL 语句片段 -->
</exclusion> <!-- SQL 语句片段 -->
</exclusions> <!-- SQL 语句片段 -->
</dependency> <!-- SQL 语句片段 -->
<!-- Spring Boot 集成 log4j2 -->
<dependency> <!-- SQL 语句片段 -->
<groupId>org.springframework.boot</groupId> <!-- SQL 语句片段 -->
<artifactId>spring-boot-starter-log4j2</artifactId> <!-- SQL 语句片段 -->
</dependency> <!-- SQL 语句片段 -->
</dependencies> <!-- SQL 语句片段 -->
</project> <!-- SQL 语句片段 -->
文件:xuecheng-plus-system/xuecheng-plus-system-service/src/main/java/com/xuecheng/system/config/MybatisPlusConfig.java
package com.xuecheng.system.config; // 声明类所在的包路径
import com.baomidou.mybatisplus.annotation.DbType; // 导入 DbType 类
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; // 导入 MybatisPlusInterceptor 类
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; // 导入 PaginationInnerInterceptor 类
import org.mybatis.spring.annotation.MapperScan; // 导入 MapperScan 类
import org.springframework.context.annotation.Bean; // 导入 Bean 类
import org.springframework.context.annotation.Configuration; // 导入 Configuration 类
/** // 保留原作者写的块注释
* <P> // 保留原作者写的块注释
* Mybatis-Plus 配置 // 保留原作者写的块注释
* </p> // 保留原作者写的块注释
*/ // 保留原作者写的块注释
@Configuration // 使用注解 @Configuration
@MapperScan("com.xuecheng.system.mapper") // 使用注解 @MapperScan("com.xuecheng.system.mapper")
public class MybatisPlusConfig { // 定义 class MybatisPlusConfig
/** // 保留原作者写的块注释
* 新的分页插件 // 保留原作者写的块注释
* 需要设置 MybatisConfiguration#useDeprecatedExecutor = false // 保留原作者写的块注释
* 避免缓存出现问题(该属性会在旧插件移除后一同移除) // 保留原作者写的块注释
*/ // 保留原作者写的块注释
@Bean // 使用注解 @Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() { // 定义方法 mybatisPlusInterceptor(...)
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); // 创建 MybatisPlusInterceptor 对象并赋值给 interceptor
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); // 执行语句
return interceptor; // 返回 interceptor
} // 代码块结束
} // 代码块结束
文件:xuecheng-plus-system/xuecheng-plus-system-service/src/main/java/com/xuecheng/system/mapper/DictionaryMapper.java
package com.xuecheng.system.mapper; // 声明类所在的包路径
import com.baomidou.mybatisplus.core.mapper.BaseMapper; // 导入 BaseMapper 类
import com.xuecheng.system.model.po.Dictionary; // 导入 Dictionary 类
/** // 保留原作者写的块注释
* <p> // 保留原作者写的块注释
* 数据字典 Mapper 接口 // 保留原作者写的块注释
* </p> // 保留原作者写的块注释
* // 保留原作者写的块注释
* @author itcast // 保留原作者写的块注释
*/ // 保留原作者写的块注释
public interface DictionaryMapper extends BaseMapper<Dictionary> { // 定义 interface DictionaryMapper
} // 代码块结束
文件:xuecheng-plus-system/xuecheng-plus-system-service/src/main/java/com/xuecheng/system/mapper/DictionaryMapper.xml
<?xml version="1.0" encoding="UTF-8"?> <!-- XML 声明 -->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- SQL 语句片段 -->
<mapper namespace="com.xuecheng.system.mapper.DictionaryMapper"> <!-- MyBatis 映射文件的根标签 -->
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.xuecheng.system.model.po.Dictionary"> <!-- 定义结果映射 -->
<id column="id" property="id" /> <!-- 主键列的映射规则 -->
<result column="name" property="name" /> <!-- 字段与属性的映射规则 -->
<result column="code" property="code" /> <!-- 字段与属性的映射规则 -->
<result column="item_values" property="itemValues" /> <!-- 字段与属性的映射规则 -->
</resultMap> <!-- 结束 resultMap 区块 -->
<!-- 通用查询结果列 -->
<sql id="Base_Column_List"> <!-- 声明可复用的 SQL 片段 -->
id, name, code, item_values <!-- SQL 语句片段 -->
</sql> <!-- 结束 SQL 片段 -->
</mapper> <!-- 结束 mapper 标签 -->
文件:xuecheng-plus-system/xuecheng-plus-system-service/src/main/java/com/xuecheng/system/service/DictionaryService.java
package com.xuecheng.system.service; // 声明类所在的包路径
import com.baomidou.mybatisplus.extension.service.IService; // 导入 IService 类
import com.xuecheng.system.model.po.Dictionary; // 导入 Dictionary 类
import java.util.List; // 导入 List 类
/** // 保留原作者写的块注释
* <p> // 保留原作者写的块注释
* 数据字典 服务类 // 保留原作者写的块注释
* </p> // 保留原作者写的块注释
* // 保留原作者写的块注释
* @author itcast // 保留原作者写的块注释
* @since 2021-10-07 // 保留原作者写的块注释
*/ // 保留原作者写的块注释
public interface DictionaryService extends IService<Dictionary> { // 定义 interface DictionaryService
/** // 保留原作者写的块注释
* 查询所有数据字典内容 // 保留原作者写的块注释
* @return // 保留原作者写的块注释
*/ // 保留原作者写的块注释
List<Dictionary> queryAll(); // 执行语句
/** // 保留原作者写的块注释
* 根据code查询数据字典 // 保留原作者写的块注释
* @param code -- String 数据字典Code // 保留原作者写的块注释
* @return // 保留原作者写的块注释
*/ // 保留原作者写的块注释
Dictionary getByCode(String code); // 执行语句
} // 代码块结束
文件:xuecheng-plus-system/xuecheng-plus-system-service/src/main/java/com/xuecheng/system/service/impl/DictionaryServiceImpl.java
package com.xuecheng.system.service.impl; // 声明类所在的包路径
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; // 导入 LambdaQueryWrapper 类
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; // 导入 ServiceImpl 类
import com.xuecheng.system.mapper.DictionaryMapper; // 导入 DictionaryMapper 类
import com.xuecheng.system.model.po.Dictionary; // 导入 Dictionary 类
import com.xuecheng.system.service.DictionaryService; // 导入 DictionaryService 类
import lombok.extern.slf4j.Slf4j; // 导入 Slf4j 类
import org.springframework.stereotype.Service; // 导入 Service 类
import java.util.List; // 导入 List 类
/** // 保留原作者写的块注释
* <p> // 保留原作者写的块注释
* 数据字典 服务实现类 // 保留原作者写的块注释
* </p> // 保留原作者写的块注释
* // 保留原作者写的块注释
* @author itcast // 保留原作者写的块注释
*/ // 保留原作者写的块注释
@Slf4j // 使用注解 @Slf4j
@Service // 使用注解 @Service
public class DictionaryServiceImpl extends ServiceImpl<DictionaryMapper, Dictionary> implements DictionaryService { // 定义 class DictionaryServiceImpl
@Override // 使用注解 @Override
public List<Dictionary> queryAll() { // 定义方法 queryAll(...)
List<Dictionary> list = this.list(); // 把 this.list() 的返回值赋给 list
return list; // 返回 list
} // 代码块结束
@Override // 使用注解 @Override
public Dictionary getByCode(String code) { // 定义方法 getByCode(...)
LambdaQueryWrapper<Dictionary> queryWrapper = new LambdaQueryWrapper<>(); // 创建 LambdaQueryWrapper<> 对象并赋值给 queryWrapper
queryWrapper.eq(Dictionary::getCode, code); // 执行语句
Dictionary dictionary = this.getOne(queryWrapper); // 把 this.getOne(queryWrapper) 赋值给 dictionary
return dictionary; // 返回 dictionary
} // 代码块结束
} // 代码块结束
评论
0 条
还没有评论,先写一条吧。