目录
1.传智在线项目
1.1功能简介
-
做的什么模块?
-
整个项目分为两大部分:前台部分、后台部分
-
前台部分:为用户使用部分,可以进行视频的购买与学习。
-
后台部分:为管理操作部分,进行视频上传与维护。
-
本课程主要完成的是
后台部分
。
-
-
用到什么技术?
-
后端:SpringCloud alibaba核心组件Nacos+SSM+mybatis-plus+swagger-ui+POI+Redis + JavaMail +RabbitMQ+EasyExcel…..
-
前端:Vue全家桶:Vue+Vue-Router+Vuex+SPA + element ui admin
-
1.2系统模块
1.3系统架构
-
前后端分离开发:
-
解耦
-
后端和前端完全分离,并且后台接口可以供给多端使用!(APP,微信,PC,WAP)(Restful风格的接口可以给任何应用去使用)
-
2.数据库设计
2.1 数据库
zx_edu_course:课程相关的库
zx_edu_teacher:老师板块相关的库
zx_edu_user:登录用户相关的库
zx_edu_vod:视频相关的库
2.2 数据表
本章主要记录学习中:老师后端的增删改查(用到了该表)
3.创建项目
3.1 项目架构
3.2 创建父项目:zx_parent_practise
在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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.czxy.zx</groupId>
<artifactId>zx_parent_practise</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
<module>zx_common_practise</module>
<module>zx_domain_practise</module>
<module>zx_gateway</module>
<module>zx_service_teacher</module>
</modules>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
<spring-cloud-release.version>Hoxton.SR3</spring-cloud-release.version>
<nacos.version>1.1.0</nacos.version>
<alibaba.cloud.version>2.2.1.RELEASE</alibaba.cloud.version>
<mysql.version>5.1.32</mysql.version>
<mybatis.plus.version>3.4.0</mybatis.plus.version>
<druid.starter.version>1.1.9</druid.starter.version>
<jwt.jjwt.version>0.9.0</jwt.jjwt.version>
<jwt.joda.version>2.9.7</jwt.joda.version>
<swagger.version>2.7.0</swagger.version>
<swagger.anno.version>1.5.13</swagger.anno.version>
<beanutils.version>1.9.3</beanutils.version>
<aliyun.sdk.core.version>3.3.1</aliyun.sdk.core.version>
<aliyun.sdk.dysmsapi.version>1.0.0</aliyun.sdk.dysmsapi.version>
<fastjson.version>1.2.9</fastjson.version>
<zx.version>1.0-SNAPSHOT</zx.version>
</properties>
<!-- 1 确定spring boot的版本-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.5.RELEASE</version>
</parent>
<!-- 3 锁定版本-->
<dependencyManagement>
<dependencies>
<!-- sprig cloud-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud-release.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--nacos -->
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
<version>${nacos.version}</version>
</dependency>
<!--nacos cloud 发现 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>${alibaba.cloud.version}</version>
</dependency>
<!--nacos cloud 配置 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>${alibaba.cloud.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-starter-alibaba-sentinel -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
<version>${alibaba.cloud.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-seata</artifactId>
<version>${alibaba.cloud.version}</version>
</dependency>
<!-- mybatis plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis.plus.version}</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-annotation</artifactId>
<version>${mybatis.plus.version}</version>
</dependency>
<!-- mysql驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<!-- druid启动器 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>${druid.starter.version}</version>
</dependency>
<!--swagger2-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>${swagger.version}</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>${swagger.version}</version>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId>
<version>${swagger.anno.version}</version>
</dependency>
<!--jwt-->
<!--JavaBean工具类,用于JavaBean数据封装-->
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>${beanutils.version}</version>
</dependency>
<!--jwt工具-->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>${jwt.jjwt.version}</version>
</dependency>
<!--joda 时间工具类 -->
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>${jwt.joda.version}</version>
</dependency>
<!--短信-->
<dependency>
<groupId>com.aliyuncs</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>${aliyun.sdk.core.version}</version>
</dependency>
<dependency>
<groupId>com.aliyuncs.dysmsapi</groupId>
<artifactId>aliyun-java-sdk-dysmsapi</artifactId>
<version>${aliyun.sdk.dysmsapi.version}</version>
</dependency>
<!--fastjson-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>${fastjson.version}</version>
</dependency>
<!--自定义项目 zx.version-->
<dependency>
<groupId>com.czxy.zx</groupId>
<artifactId>zx_common_practise</artifactId>
<version>${zx.version}</version>
</dependency>
<dependency>
<groupId>com.czxy.zx</groupId>
<artifactId>zx_domain_practise</artifactId>
<version>${zx.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
</project>
3.3:创建子项目:zx_common_practise
在pom.xml文件中导入依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--lombok , @Data 等-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!--swagger2-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
</dependency>
<!--jwt工具-->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
</dependency>
<!--joda 时间工具类 -->
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
</dependency>
<!--JavaBean工具类,用于JavaBean数据封装-->
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
</dependency>
<!-- vod相关 -->
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.5.1</version>
</dependency>
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.10.2</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-vod</artifactId>
<version>2.15.11</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.28</version>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20170516</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.2</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-sdk-vod-upload</artifactId>
<version>1.4.13</version>
</dependency>
</dependencies>
导入通用的配置文件:异常,验证码动图,结果封装,邮件,视频工具类等等
3.4:创建子项目:zx_domain_practise
依赖:
<dependencies>
<!--lombok , @Data 等-->
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId>
<version>1.5.13</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!--jackson , @JsonFormat-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-json</artifactId>
</dependency>
<!--mybatis-plus , @TableName @TableId 等 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-annotation</artifactId>
</dependency>
</dependencies>
3.5:创建子项目:zx_geteway
依赖:
<dependencies>
<!-- 网关 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<!-- nacos 服务发现 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
</dependencies>
application.yml:在yml文件中配置一下网关,目的访问其他服务,统一经过网关进行访问
端口:10010
#端口号
server:
port: 10010
spring:
application:
name: zx-gateway
servlet:
multipart:
max-file-size: 2MB #上传文件的大小
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848 #nacos服务地址
gateway:
discovery:
locator:
enabled: true #开启服务注册和发现的功能,自动创建router以服务名开头的请求路径转发到对应的服务
lowerCaseServiceId: true #将请求路径上的服务名配置为小写
sc:
jwt:
secret: sc@Login(Auth}*^31)&czxy% # 登录校验的密钥
pubKeyPath: D:/rsa/rsa.pub # 公钥地址
priKeyPath: D:/rsa/rsa.pri # 私钥地址
expire: 360 # 过期时间,单位分钟
filter:
allowPaths:
- swagger
- /api-docs
- /user/login
- /user/info
- /user/register
- /user/sendemail
- /user/active
- /verifycode
导入跨域处理类:前端访问后端时会出现跨域的错误,该配置类进行处理
@Configuration
public class GlobalCorsConfig {
@Bean
public WebFilter corsFilter2() {
return (ServerWebExchange ctx, WebFilterChain chain) -> {
ServerHttpRequest request = ctx.getRequest();
if (CorsUtils.isCorsRequest(request)) {
HttpHeaders requestHeaders = request.getHeaders();
ServerHttpResponse response = ctx.getResponse();
HttpMethod requestMethod = requestHeaders.getAccessControlRequestMethod();
HttpHeaders headers = response.getHeaders();
headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN, requestHeaders.getOrigin());
headers.addAll(HttpHeaders.ACCESS_CONTROL_ALLOW_HEADERS,
requestHeaders.getAccessControlRequestHeaders());
if (requestMethod != null) {
headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_METHODS, requestMethod.name());
}
headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_CREDENTIALS, "true");
headers.add(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, "*");
if (request.getMethod() == HttpMethod.OPTIONS) {
response.setStatusCode(HttpStatus.OK);
return Mono.empty();
}
}
return chain.filter(ctx);
};
}
配置网关:启动类
@SpringBootApplication
//配置服务发现
@EnableDiscoveryClient
public class GatewayApplication {
public static void main(String[] args) {
SpringApplication.run(GatewayApplication.class,args);
}
}
3.6:创建子项目:zx_service_teacher
老师服务:今天主要的老师服务后端的增删改查
导入依赖
<dependencies>
<!--web起步依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- nacos 客户端 -->
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
</dependency>
<!-- nacos 服务发现 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!--swagger2-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
</dependency>
<!-- feign 远程调用 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<!--测试-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<!-- mybatis plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis.plus.version}</version>
</dependency>
<!-- mysql驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--自定义项目-->
<dependency>
<groupId>com.czxy.zx</groupId>
<artifactId>zx_common_practise</artifactId>
</dependency>
<dependency>
<groupId>com.czxy.zx</groupId>
<artifactId>zx_domain_practise</artifactId>
</dependency>
<!-- redis 启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- JavaMail 启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<!-- MQ 启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
<!-- fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
</dependency>
<!--开发者工具-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
配置application.yml
# 服务端口号 server: port: 9999 # 服务名 spring: application: name: teacher-service datasource: driverClassName: com.mysql.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/zx_edu_teacher?useUnicode=true&characterEncoding=utf8 username: root password: root druid: #druid 连接池配置 initial-size: 1 #初始化连接池大小 min-idle: 1 #最小连接数 max-active: 20 #最大连接数 test-on-borrow: true #获取连接时候验证,会影响性能 cloud: nacos: discovery: server-addr: 127.0.0.1:8848 #nacos服务地址 redis: database: 0 #数据库索引,取值0-15,表示16个库可选择 host: 127.0.0.1 #服务器地址 port: 6379 #服务器连接端口号 mail: host: smtp.126.com #发送邮件服务器 username: itcast_lt@126.com #账号 password: 1qaz2wsx #密码 default-encoding: UTF-8 #默认编码时 rabbitmq: host: 127.0.0.1 port: 5672 username: guest password: guest virtualHost: / devtools: restart: enabled: true #设置开启热部署 additional-paths: src/main/java #重启目录 exclude: WEB-INF/** freemarker: cache: false #页面不加载缓存,修改即时生效 #开启log4j打印SQL语句 logging: level: com: czxy: zx: teacher: mapper: debug # mp日志打印 mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl global-config: db-config: logic-delete-value: 1 logic-not-delete-value: 0
配置老师启动类:
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class TeacherApplication {
public static void main(String[] args) {
SpringApplication.run(TeacherApplication.class,args);
}
}
@SpringBootApplication:来标注一个主程序类,说明这是一个Spring Boot应用
@EnableDiscoveryClient:配置服务发现
@EnableFeignClients:配置远程调用Feign
4,老师模块的前置工作:
4.1:JavaBean
老师:JavaBean
@Data//lombok注解
@ApiModel(value = "EduTeacher对象",description = "讲师")//swagger注解
public class EduTeacher {
@TableId(value = "id",type = IdType.AUTO)//mybatis-plus的注解
@ApiModelProperty(value = "讲师ID")//swagger注解
private String id;
@ApiModelProperty(value = "讲师姓名")
private String name;
@ApiModelProperty(value = "讲师资历,一句话说明讲师")
private String intro;
@ApiModelProperty(value = "讲师简介")
private String career;
@ApiModelProperty(value = "头衔 1高级讲师 2首席讲师")
private Integer level;
@ApiModelProperty(value = "讲师头像")
private String avatar;
@ApiModelProperty(value = "讲师排序")
private Integer sort;
@ApiModelProperty(value = "逻辑删除 1已删除, 0未删除")
@TableField(value = "is_deleted",fill = FieldFill.INSERT)
@TableLogic//逻辑删除
private Integer isDeleted;
@ApiModelProperty(value = "创建时间")
@TableField(value = "gmt_create",fill = FieldFill.INSERT)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private Date gmtCreate;
@ApiModelProperty(value = "更新时间")
@TableField(value = "gmt_modified",fill = FieldFill.INSERT_UPDATE)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private Date gmtModified;
}
4.2:mapper
@Mapper
public interface TeacherMapper extends BaseMapper<EduTeacher> {
}
4.3:service
接口:
public interface EduTeacherService extends IService<EduTeacher> {
Page<EduTeacher> condition(TeacherVo teacherVo, Integer current, Integer size);
}
实现类:
@Service
//开启事务管理
@Transactional
public class EduTeacherServiceImpl extends ServiceImpl<TeacherMapper, EduTeacher> implements EduTeacherService {
@Override
public Page<EduTeacher> condition(TeacherVo teacherVo, Integer current, Integer size) {
//创建条件
QueryWrapper<EduTeacher> eduTeacherQueryWrapper = new QueryWrapper<>();
if (StringUtils.isNotBlank(teacherVo.getName())){
eduTeacherQueryWrapper.like("name",teacherVo.getName());
}
if (StringUtils.isNotBlank(teacherVo.getLevel())){
eduTeacherQueryWrapper.eq("level",teacherVo.getLevel());
}
if (StringUtils.isNotBlank(teacherVo.getBeginDate())){
eduTeacherQueryWrapper.ge("gmt_create",teacherVo.getBeginDate()+"00:00:00");
}
if (StringUtils.isNotBlank(teacherVo.getEndDate())){
eduTeacherQueryWrapper.le("gmt_create",teacherVo.getEndDate()+"00:00:00");
}
//分页
Page<EduTeacher> eduTeacherPage = new Page<>(current, size);
//查询
baseMapper.selectPage(eduTeacherPage,eduTeacherQueryWrapper);
return eduTeacherPage;
}
}
4.4:controller
4.5:拷贝配置类
一个是进行swagger测试的配置类
一个是进行Mybatispus分页插件的配置类
4.6:访问swagger
配置网关就通过:网关访问服务的方式进行访问swagger.ui.html
通过网关访问的地址:http://localhost:10010/teacher-service/swagger-ui.html#/
咱们再看一下直接访问老师服务地址:http://localhost:9999/swagger-ui.html
两种都可以进行访问
5,功能:老师的逻辑删除
5.1:controller逻辑删除方法
@DeleteMapping("/{teacherid}")
@ApiOperation(value = "通过id删除老师")
public BaseResult deleteByid(@PathVariable("teacherid")Integer teacherid){
boolean flag = eduTeacherService.removeById(teacherid);
if (flag){
return BaseResult.ok("删除成功");
}else {
return BaseResult.error("删除失败");
}
}
5.2:逻辑删除注解
该注解在老师JavaBean中进行配置:
@ApiModelProperty(value = "逻辑删除 1已删除, 0未删除")
//这个注解属于swagger:用来标识
@TableField(value = "is_deleted",fill = FieldFill.INSERT)
//用来进行填充默认数据
@TableLogic//逻辑删除
private Integer isDeleted;
5.3:配置handler:进行异步消息处理
@Component
public class TeacherMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
// 添加-自动填充数据
setFieldValByName("isDeleted", 0, metaObject);
// 添加时间、修改时间
setFieldValByName("gmtCreate", new Date(), metaObject);
setFieldValByName("gmtModified", new Date(), metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
// 修改时间
setFieldValByName("gmtModified", new Date(), metaObject);
}
}
5.4:配置application.yml文件
# mp日志打印 mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl global-config: db-config: logic-delete-value: 1 #删除数据库中对应列的值为1 logic-not-delete-value: 0#不删除数据库中对应的列值为0
5.5:在swagger中测试该方法
删除id为10的土豆
成功删除,查看一下数据库数据
6,功能:条件查询和分页
6.1:Controller
这个条件查询和分页还是挺重要的
@ApiOperation("条件查询老师")
@PostMapping("/condition/{current}/{size}")
public BaseResult condition(@RequestBody TeacherVo teacherVo,Integer current,Integer size){
Page<EduTeacher> condition = eduTeacherService.condition(teacherVo, current, size);
if (condition!=null){
return BaseResult.ok("查询成功",condition.getRecords());
}else {
return BaseResult.error("查询失败");
}
}
6.2:Service
@Service
//开启事务管理
@Transactional
public class EduTeacherServiceImpl extends ServiceImpl<TeacherMapper, EduTeacher> implements EduTeacherService {
@Override
public Page<EduTeacher> condition(TeacherVo teacherVo, Integer current, Integer size) {
//创建条件
QueryWrapper<EduTeacher> eduTeacherQueryWrapper = new QueryWrapper<>();
if (StringUtils.isNotBlank(teacherVo.getName())){
eduTeacherQueryWrapper.like("name",teacherVo.getName());
}
if (StringUtils.isNotBlank(teacherVo.getLevel())){
eduTeacherQueryWrapper.eq("level",teacherVo.getLevel());
}
if (StringUtils.isNotBlank(teacherVo.getBeginDate())){
eduTeacherQueryWrapper.ge("gmt_create",teacherVo.getBeginDate()+"00:00:00");
}
if (StringUtils.isNotBlank(teacherVo.getEndDate())){
eduTeacherQueryWrapper.le("gmt_create",teacherVo.getEndDate()+"00:00:00");
}
//分页
Page<EduTeacher> eduTeacherPage = new Page<>(current, size);
//查询
baseMapper.selectPage(eduTeacherPage,eduTeacherQueryWrapper);
return eduTeacherPage;
}
7,功能:添加老师,修改老师
7.1:添加配置类:进行添加和修改时间的填充
配置类上面已经给出
7.2:添加老师
7.2.1:Controller
@ApiOperation("添加老师")
@PostMapping
public BaseResult addteacher(@RequestBody EduTeacher eduTeacher){
boolean flag = eduTeacherService.save(eduTeacher);
if (flag){
return BaseResult.ok("添加成功");
}else {
return BaseResult.error("添加失败");
}
}
7.3:修改老师
7.3.1:Controller
@PutMapping
@ApiOperation(value = "修改老师")
public BaseResult updateteacher(@RequestBody EduTeacher eduTeacher){
boolean flag = eduTeacherService.updateById(eduTeacher);
if (flag){
return BaseResult.ok("修改成功");
}else {
return BaseResult.error("修改失败");
}
}
8,功能:删除老师,查询老师,批量删除老师
8.1:删除老师
8.1.1:Controller
@DeleteMapping("/{teacherid}")
@ApiOperation(value = "通过id删除老师")
public BaseResult deleteByid(@PathVariable("teacherid")Integer teacherid){
boolean flag = eduTeacherService.removeById(teacherid);
if (flag){
return BaseResult.ok("删除成功");
}else {
return BaseResult.error("删除失败");
}
}
8.2:查询老师
8.2.1:Controller
@GetMapping("/{teacherid}")
@ApiOperation("通过id查询老师详情")
public BaseResult selectByid(@PathVariable("teacherid") Integer teacherid){
EduTeacher eduTeacher = eduTeacherService.getById(teacherid);
if (eduTeacher!=null){
return BaseResult.ok("查询成功",eduTeacher);
}else {
return BaseResult.error("查询失败");
}
}
8.3:批量删除老师
8.3.1:Controller
@PostMapping("/batchdelete")
@ApiOperation("批量删除老师")
public BaseResult batchdelete(@RequestBody List<Integer> ids){
boolean flag = eduTeacherService.removeByIds(ids);
if (flag){
return BaseResult.ok("批量删除成功");
}else {
return BaseResult.error("批量删除失败");
}
}
总结
主要功能:条件和分页查询,其余的功能都是通过MybatisPlus中的通用Service进行调用方法,以用来达到功能的实现
BaseRsult工具类:用来封装数据进行返回
GlobalCorsConfig配置类:用来处理跨域
TeacherMetaObjectHandler:对信息进行处理,该老师服务中应用了。例如:每条数据的创建时间和修改时间。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/120841.html