arigaQiqi影视——后端篇一

本篇涉及技术栈:

        spring boot

        spring cloud

        mybatis

        vue

目标:

        基础的查询功能,完成nacos的注册与发现

小白第一个分布式项目,可能有地方没有领悟到位,还请海涵

本篇项目结构:

        父项目:Qiqi-java

        子模块:Qiqi-common、Qiqi-provider

        Qiqi-common结构:

                简介:Qiqi-common主要用于查询电影

                common:公共返回类型Result

                controller:controller和dto、request等用于与前端交互的类

                entity:实体类

                exception:全局异常

                mapper:mapper类

                service:Iservice和serviceImpl

        Qiqi-provider结构:

                简介:Qiqi-provider主要用于查询和操作电影详细情况

                common:公共返回类型Result

                controller:controller和dto、request等用于与前端交互的类

                entity:实体类

                exception:全局异常

                mapper:mapper类

                service:Iservice和serviceImpl

Sql数据表:

--  电影详情表
CREATE TABLE `basics` (
                          `tconst` String NOT NULL COMMENT '唯一识别符',
                          `titleType` varchar(50) NOT NULL COMMENT '视频类型(电影 or 视频)',
                          `primaryTitle` varchar(255) NOT NULL COMMENT '当前标题',
                          `oldTitle` varchar(255) NOT NULL COMMENT '原始标题',
                          `isAdult` tinyint NOT NULL COMMENT '是否面向成人(0否 1是)',
                          `startYear` datetime NOT NULL COMMENT '连载开始时间',
                          `endYear` datetime DEFAULT NULL COMMENT '连载结束时间,未结束为 ''\\n''',
                          `runtimeMinutes` bigint NOT NULL COMMENT '总分钟数',
                          `genres` varchar(255) NOT NULL COMMENT '作品类型(爱情、动作等)',
                          PRIMARY KEY (`tconst`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

--  电影总览表(电影详情表外层)
CREATE TABLE `akas` (
                        `tconst` String NOT NULL COMMENT '唯一标识符',
                        `title` varchar(255) NOT NULL COMMENT '当前标题',
                        `region` varchar(255) NOT NULL COMMENT '语言地区(缩写,例如CN)',
                        `language` varchar(255) NOT NULL COMMENT '使用的语言',
                        `types` varchar(255) DEFAULT NULL COMMENT '播放形式(剧场上映、电视播放),可为空',
                        `attributes` varchar(255) DEFAULT NULL COMMENT '其他特征,如修订版、加长版,可为空',
                        `isOrlginalTitle` tinyint NOT NULL COMMENT '是否为原始标题,是则1 否则0',
                        `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
                        PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

--  季度剧集信息表
CREATE TABLE `episode` (
                           `tconst` varchar(255) NOT NULL COMMENT '唯一标识符',
                           `parentTconst` varchar(255) NOT NULL COMMENT '父标识符',
                           `seasonNumber` int NOT NULL COMMENT '季度编号,表示某系列第几季',
                           `episodeNumber` int NOT NULL COMMENT '剧集编号,表示当前季度的第几集',
                           PRIMARY KEY (`tconst`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

两个模块的实体类:

package com.example.Qiqijava.qiqicommon.entity;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.util.Date;

@Data
public class Basics {

    /**
     * 唯一标识符
     * 自增
     * 非空
     */
    private String tconst;

    /**
     * 视频类型(电影 or 视频)
     * 非空
     */
    private String titleType;

    /**
     * 当前标题
     * 非空
     */
    private String primaryTitle;

    /**
     * 原始标题
     * 非空
     */
    private String oldTitle;

    /**
     * 是否面向成人
     * 0否 1是
     * 非空
     */
    private char isAdult;

    /**
     * 连载开始时间
     * 非空
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private Date startYear;

    /**
     * 连载结束时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private Date endYear;

    /**
     * 总时长
     * 非空
     */
    private Long runtimeMinutes;

    /**
     * 作品类型
     * 爱情、动作、科幻等
     */
    private String genres;

    /**
     * id
     * 非空
     */
    private Integer id;

}
package com.example.qiqijava.qiqiprovider.entity;

import lombok.Data;

@Data
public class Akas {
    /**
     * 唯一标识符
     * 非空
     */
    private String tconst;

    /**
     * 当前标题
     * 非空
     */
    private String title;

    /**
     * 语言地区
     * 非空
     */
    private String region;

    /**
     * 使用的语言编码
     * 非空
     */
    private String language;

    /**
     * 播放形式
     */
    private String types;

    /**
     * 其他特征
     */
    private String attributes;

    /**
     * 是否为原始标题
     * 非空
     */
    private char isOrlginalTitle;

    /**
     * id
     * 自增
     * 非空
     */
    private Integer id;
}

service层(只展示impl)

package com.example.Qiqijava.qiqicommon.service.impl;

import com.example.Qiqijava.qiqicommon.controller.request.BaseRequest;
import com.example.Qiqijava.qiqicommon.entity.Akas;
import com.example.Qiqijava.qiqicommon.entity.Basics;
import com.example.Qiqijava.qiqicommon.mapper.BasicsMapper;
import com.example.Qiqijava.qiqicommon.service.IBasicsService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;
//service的作用就是聚合业务,将业务放到service里面写

@Slf4j
@Service
@Transactional
public class BasicsService implements IBasicsService {

    @Autowired
    BasicsMapper basicsMapper;

    List<Akas> temporary ;

    @Override
    public List<Basics> list() {
        return basicsMapper.list();
    }

    @Override
    public PageInfo<Basics> page(BaseRequest baseRequest){
        PageHelper.startPage(baseRequest.getPageNum(),baseRequest.getPageSize());
        List<Basics> basicsList = basicsMapper.listByCondition(baseRequest);
        return new PageInfo<>(basicsList);
    }

    @Override
    public PageInfo<Akas> akasPage(Integer id) {
        return null;
    }

    @Override
    public void save(Basics obj) {

    }


    @Override
    public Basics getById(Integer d_id) {
        return basicsMapper.getById(d_id);
    }

    @Override
    public void update(Basics obj) {
        basicsMapper.updateById(obj);
    }

    @Override
    public void deleteById(Integer d_id) {
        basicsMapper.deleteById(d_id);
    }


    @Override
    public PageInfo<Akas> getByIdAkas(String tconst) {
        System.out.println("++++++++++++++++++++++++++++++++++++");
        System.out.println("tconst ===>" + tconst);
        temporary = basicsMapper.listByConditionAkas(tconst);
        System.out.println("++++++++++++++++++++++++++++++++++++");
        System.out.println("temporary ====> " + temporary);
        return new PageInfo<>(temporary);
    }


}

package com.example.qiqijava.qiqiprovider.service.impl;

import com.example.qiqijava.qiqiprovider.entity.Akas;
import com.example.qiqijava.qiqiprovider.mapper.AkasMapper;
import com.example.qiqijava.qiqiprovider.service.IAkasService;
import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;
//service的作用就是聚合业务,将业务放到service里面写

@Slf4j
@Service
@Transactional
public class AkasService implements IAkasService {

    @Autowired
    AkasMapper akasMapper;

    List<Akas> temporary ;

    @Override
    public List<Akas> list() {
        return null;
    }

    @Override
    public void save(Akas obj) {

    }


    @Override
    public Akas getById(Integer d_id) {
        return akasMapper.getById(d_id);
    }

    @Override
    public void update(Akas obj) {
        akasMapper.updateById(obj);
    }

    @Override
    public void deleteById(Integer d_id) {
        akasMapper.deleteById(d_id);
    }


    @Override
    public PageInfo<Akas> getByIdAkas(String tconst) {
        System.out.println("++++++++++++++++++++++++++++++++++++");
        System.out.println("tconst ===>" + tconst);
        temporary = akasMapper.listByConditionAkas(tconst);
        System.out.println("++++++++++++++++++++++++++++++++++++");
        System.out.println("temporary ====> " + temporary);
        return new PageInfo<>(temporary);
    }


}

mapper:

package com.example.Qiqijava.qiqicommon.mapper;

import com.example.Qiqijava.qiqicommon.controller.request.BaseRequest;
import com.example.Qiqijava.qiqicommon.entity.Akas;
import com.example.Qiqijava.qiqicommon.entity.Basics;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;

import java.util.List;

@Mapper
@Repository
public interface BasicsMapper {

    List<Basics> list();

    List<Basics> listByCondition(BaseRequest baseRequest);

    List<Akas> listByConditionAkas(String tconst);

    void save(Basics obj);

    Basics getById(Integer d_id);

    void updateById(Basics obj);

    void deleteById(Integer d_id);

    List<Akas> getByIdAkas(Integer id);
}
package com.example.qiqijava.qiqiprovider.mapper;

import com.example.qiqijava.qiqiprovider.entity.Akas;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;

import java.util.List;

@Mapper
@Repository
public interface AkasMapper {

    void save(Akas obj);

    Akas getById(Integer d_id);

    void updateById(Akas obj);

    void deleteById(Integer d_id);

    List<Akas> listByConditionAkas(String tconst);
}

controller:

package com.example.Qiqijava.qiqicommon.controller;

import com.example.Qiqijava.qiqicommon.common.Result;
import com.example.Qiqijava.qiqicommon.controller.request.BasicsPageRequest;
import com.example.Qiqijava.qiqicommon.entity.Basics;
import com.example.Qiqijava.qiqicommon.service.IBasicsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@CrossOrigin
@RestController
@RequestMapping("/basics")
public class BasicsController {

    @Autowired
    IBasicsService basicsService;

    //总查询


    @GetMapping("/page")
    public Result page(BasicsPageRequest basicsPageRequest){
        System.out.println("++++++++++++++++++++++++++++++++++++");
        System.out.println("basics ====> " + basicsService.page(basicsPageRequest));
        return Result.success(basicsService.page(basicsPageRequest
        ));
    }

    //修改查询
    @GetMapping("/{d_id}")
    public Result getById(@PathVariable Integer d_id){
        Basics medicinal = basicsService.getById(d_id);
        return Result.success(medicinal);
    }
        //增加
    @PostMapping("/save")
    public Result save(@RequestBody Basics obj){

        basicsService.save(obj);
        return Result.success();
    }
        //修改
    @PostMapping("/update")
    public Result update(@RequestBody Basics obj){
        basicsService.update(obj);
        return Result.success();
    }
        //删除
    @DeleteMapping("/del/{d_id}")
    public Result del(@PathVariable Integer d_id){
        basicsService.deleteById(d_id);
        return Result.success();
    }
        //

}
package com.example.qiqijava.qiqiprovider.controller;

import com.example.qiqijava.qiqiprovider.common.Result;
import com.example.qiqijava.qiqiprovider.entity.Akas;
import com.example.qiqijava.qiqiprovider.service.IAkasService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@CrossOrigin
@RestController
@RequestMapping("/akas")
public class AkasController {

    @Autowired
    IAkasService akasService;

    //总查询

    @GetMapping("/akaslists/{tconst}")
    public Result akaslist(@PathVariable String tconst){

        return Result.success( akasService.getByIdAkas(tconst));
    }

    //修改查询
    @GetMapping("/{d_id}")
    public Result getById(@PathVariable Integer d_id){
        Akas medicinal = akasService.getById(d_id);
        return Result.success(medicinal);
    }
        //增加
    @PostMapping("/save")
    public Result save(@RequestBody Akas obj){

        akasService.save(obj);
        return Result.success();
    }
        //修改
    @PostMapping("/update")
    public Result update(@RequestBody Akas obj){
        akasService.update(obj);
        return Result.success();
    }
        //删除
    @DeleteMapping("/del/{d_id}")
    public Result del(@PathVariable Integer d_id){
        akasService.deleteById(d_id);
        return Result.success();
    }
        //

}

application.yml

server:
  port: 9091

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3307/qiqi
    username: root
    password: 123123
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
  application:
    name: qiqi-provinder

mybatis:
  mapper-locations: classpath:mapping/*.xml
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

server:
  port: 9090

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3307/qiqi
    username: root
    password: 123123
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
  application:
    name: qiqi-common

mybatis:
  mapper-locations: classpath:mapping/*.xml
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

至此,已经完成了基础的查询功能,并完成了nacos的注册与发现功能

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

.英杰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值