目次
3.2 親プロジェクトを作成する: zx_parent_practise
3.3: サブプロジェクトを作成します: zx_common_practise
3.4: サブプロジェクトの作成: zx_domain_practise
3.5: サブプロジェクトを作成します: zx_geteway
3.6: サブプロジェクトを作成します: zx_service_teacher
5.4: application.yml ファイルを構成する
1.川芝オンラインプロジェクト
1.1機能紹介
-
どのモジュールを実行しますか?
-
プロジェクト全体は、前編と後編の 2 つの部分に分かれています。
-
フロントエンド部分:ユーザーが動画を購入して学習する部分です。
-
バックグラウンド部分:管理・運用部分では、動画のアップロードやメンテナンスを行います。
-
このコースはおおむね修了して
后台部分
います。
-
-
どのような技術が使用されていますか?
-
バックエンド: SpringCloud アリババ コア コンポーネント 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、WeChat、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 connection pool configuration initial-size: 1 #initialization connection pool size min-idle: 1 #minimum number of connections max-active: 20 #maximum number of connections 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 # 送信メール サーバー ユーザー名: [email protected] #アカウント パスワード: 1qaz2wsx #パスワード のデフォルト エンコーディング: UTF-8 #デフォルト エンコーディングは rabbitmq: ホスト: 127.0.0.1 ポート: 5672 ユーザー名: ゲスト パスワード: ゲスト 仮想ホスト: / devtools: 再起動: 有効: 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-値: 1 論理削除しない値: 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:ジャバビーン
講師:ジャバビーン
@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
public interface TeacherMapper extends BaseMapper<EduTeacher> {
}
4.3:サービス
インターフェース:
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:コントローラー
4.5: 構成クラスのコピー
1 つは、swagger テスト用の構成クラスです。
1 つは、Mybatispus ページング プラグインの構成クラスです。
4.6: アクセス闊歩
サービスにアクセスするゲートウェイを使用して、swagger.ui.html にアクセスするようにゲートウェイを構成します。
ゲートウェイ経由でアクセスするアドレス: http://localhost:10010/teacher-service/swagger-ui.html#/
教師サービス アドレスへの直接アクセスを見てみましょう: http://localhost:9999/swagger-ui.html
な
どちらもアクセス可能
5. 機能: 教師の論理削除
5.1: コントローラの論理削除方法
@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: ハンドラーの構成: 非同期メッセージ処理の実行
な
@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 log print mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl global-config: db-config: logic-delete-value: 1 #データベースから 1 へ の論理非削除値: 0#データベースの対応する列の値を削除しないでください 値は 0 です
5.5: メソッドを swagger でテストする
ID 10 のポテトを削除
正常に削除されました。データベース データを確認してください
6. 機能: 条件付きクエリとページネーション
6.1:コントローラー
この条件付きクエリとページネーションは依然として非常に重要です
@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
//开启事务管理
@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:コントローラー
@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:コントローラー
@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:コントローラー
@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:コントローラー
@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:コントローラー
@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 の一般的なサービスを介して呼び出され、機能の実現を実現します。
BaseRsult ツール クラス: 返されるデータをカプセル化するために使用されます
GlobalCorsConfig 構成クラス: クロスドメインの処理に使用
TeacherMetaObjectHandler: 教師サービスで使用される情報を処理します。例: 各データの作成時間と変更時間。