基于dubbo+zookeeper的spring-data-jpa demo搭建

1 篇文章 0 订阅

基于dubbo+zookeeper的spring-data-jpa demo搭建

一 创建父工程

在父工程中对demo依赖的jar包进行统一版本控制

在这里插入图片描述

二 引入依赖

由于是SpringBoot项目,所以首先引入SpringBoot父工程

<parent>
    <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-parent -->
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.5.3</version>
    <relativePath />
</parent>

定义demo依赖版本和父工程对版本进行统一控制

     <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>
        <dubbo.version>2.6.9</dubbo.version>
        <spring-boot.version>1.5.10.RELEASE</spring-boot.version>
        <druid.version>1.0.14</druid.version>
        <oracle.version>11.2.0.3</oracle.version>
        <zkclient.version>0.10</zkclient.version>
        <curator-framework.version>4.0.1</curator-framework.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <!-- https://mvnrepository.com/artifact/com.alibaba/dubbo -->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>dubbo</artifactId>
                <version>${dubbo.version}</version>
            </dependency>

            <!--        spring-data-jpa-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-jpa</artifactId>
                <version>${spring-boot.version}</version>
            </dependency>
            <!--        web-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
                <version>${spring-boot.version}</version>
            </dependency>
            <!-- springboot -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter</artifactId>
                <version>${spring-boot.version}</version>
            </dependency>
            <!-- druid -->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>${druid.version}</version>
            </dependency>
            <!-- oracle数据库驱动 -->
            <dependency>
                <groupId>com.oracle</groupId>
                <artifactId>ojdbc6</artifactId>
                <version>${oracle.version}</version>
            </dependency>
            <!-- zookeeper客户端 -->
            <dependency>
                <groupId>com.101tec</groupId>
                <artifactId>zkclient</artifactId>
                <version>${zkclient.version}</version>
            </dependency>

            <!-- 更方便操作zookeeper -->
            <dependency>
                <groupId>org.apache.curator</groupId>
                <artifactId>curator-framework</artifactId>
                <version>${curator-framework.version}</version>
            </dependency>
        </dependencies>

    </dependencyManagement>

三 创建服务提供者

在这里插入图片描述

四 服务提供者引入依赖

 <dependencies>

        <dependency>
            <groupId>com.sixa.demo</groupId>
            <artifactId>api</artifactId>
            <version>${project.version}</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.dubbo/dubbo -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
        </dependency>

        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
        </dependency>

        <dependency>
            <groupId>io.netty</groupId>
            <artifactId>netty-all</artifactId>
            <version>4.1.39.Final</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <!-- druid -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
        </dependency>
        <!-- oracle数据库驱动 -->
        <dependency>
            <groupId>com.oracle</groupId>
            <artifactId>ojdbc6</artifactId>
        </dependency>

        <dependency>
            <groupId>com.101tec</groupId>
            <artifactId>zkclient</artifactId>
        </dependency>

    </dependencies>

五 配置服务提供者

application.yaml配置

spring:
  application:
    name: provider
  datasource:
    driver-class-name: oracle.jdbc.driver.OracleDriver
    username: root
    password: root
    type: com.alibaba.druid.pool.DruidDataSource
    url: jdbc:oracle:thin:@127.0.0.1/ORCL
  jpa:
    show-sql: true
dubbo:
  application:
    name: ${spring.application.name}
  registry:
    address: zookeeper://127.0.0.1:2181
    file: N/A
  protocol:
    port: 40001
  annotation:
    package: 'com.sixa.demo.service'
  provider: # 提供者服务版本
    version: 1.0.0
server:
  port: 8081

dubbo配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://code.alibabatech.com/schema/dubbo
       http://code.alibabatech.com/schema/dubbo/dubbo.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd">

    <context:property-placeholder location="classpath:application*.yaml" ignore-unresolvable="true"/>
    <dubbo:application name="${dubbo.application.name}"/>
    <!-- 注册中心的ip地址 -->
    <dubbo:registry address="${dubbo.registry.address}"  file="${dubbo.registry.file}"/>
    <!-- dubbo协议缺省端口20880,多个提供者会冲突-->
    <dubbo:protocol name="dubbo" port="${dubbo.protocol.port}" />
    <dubbo:annotation package="${dubbo.annotation.package}"/>
    <!-- 扫描注解包路径,多个包用逗号分隔,不填pacakge表示扫描当前ApplicationContext中所有的类 -->
    <dubbo:provider version="${dubbo.provider.version}" timeout="3000000" />
</beans>

六 创建启动类并导入duubo配置

package com.sixa.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ImportResource;

/**
 * @author liuan@dist.com.cn
 * @data 2021/7/30
 */
@SpringBootApplication
@ImportResource(value = "classpath:config/spring-dubbo-provider.xml")
public class ProviderApp {
  public static void main(String[] args) {
    SpringApplication.run(ProviderApp.class,args);
  }
}

七 创建API模块

在这里插入图片描述

八 创建实体类

员工类Staff

package com.sixa.demo.entity;


import javax.persistence.*;
import java.io.Serializable;
import java.util.Set;

/**
 * @author liuan@dist.com.cn
 * @data 2021/7/30
 */
@Table(name = "staff")
@Entity
public class Staff implements Serializable {
  @Id
  @GeneratedValue(strategy = GenerationType.SEQUENCE,generator = "staff_seq")
  @SequenceGenerator(name = "staff_seq",sequenceName = "SEQ_JPA_HIBERNATE")
  private int id;
  @Column
  private String name;
  @Column
  private int age;

  @ManyToOne(targetEntity = Dept.class)
  @JoinColumn(name = "dept_id",referencedColumnName = "id")
  private Dept dept;
  @OneToMany(mappedBy = "staff")
  private Set<Salary> salaries;

  public Set<Salary> getSalaries() {
    return salaries;
  }

  public void setSalaries(Set<Salary> salaries) {
    this.salaries = salaries;
  }

  public int getId() {
    return id;
  }

  public void setId(int id) {
    this.id = id;
  }

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public int getAge() {
    return age;
  }

  public void setAge(int age) {
    this.age = age;
  }

  public Dept getDept() {
    return dept;
  }

  public void setDept(Dept dept) {
    this.dept = dept;
  }
}

部门类Dept

package com.sixa.demo.entity;

import javax.persistence.*;
import java.io.Serializable;
import java.util.Set;

/**
 * @author liuan@dist.com.cn
 * @data 2021/7/30
 */
@Table(name = "dept")
@Entity
public class Dept implements Serializable {
  @Id
  @GeneratedValue(strategy = GenerationType.SEQUENCE,generator = "dept_seq")
  @SequenceGenerator(name = "dept_seq",sequenceName = "SEQ_JPA_HIBERNATE")
  private int id;
  @Column
  private String name;
  @OneToMany(mappedBy = "dept")
  private Set<Staff> staffs;

  public int getId() {
    return id;
  }

  public void setId(int id) {
    this.id = id;
  }

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public Set<Staff> getStaffs() {
    return staffs;
  }

  public void setStaffs(Set<Staff> staffs) {
    this.staffs = staffs;
  }

}

工资类Salary

package com.sixa.demo.entity;

import javax.persistence.*;
import java.io.Serializable;
import java.util.Date;

/**
 * @author liuan@dist.com.cn
 * @data 2021/7/30
 */
@Table(name = "salary")
@Entity
public class Salary implements Serializable {
  @Id
  @GeneratedValue(strategy = GenerationType.SEQUENCE,generator = "salary_seq")
  @SequenceGenerator(name = "salary_seq",sequenceName = "SEQ_JPA_HIBERNATE")
  private int id;
  @Column
  private float money;
  @Column
  private Date time;
  @ManyToOne(targetEntity = Staff.class)
  @JoinColumn(name = "staff_id",referencedColumnName = "id")
  private Staff staff;

  public int getId() {
    return id;
  }

  public void setId(int id) {
    this.id = id;
  }

  public float getMoney() {
    return money;
  }

  public void setMoney(float money) {
    this.money = money;
  }

  public Date getTime() {
    return time;
  }

  public void setTime(Date time) {
    this.time = time;
  }

  public Staff getStaff() {
    return staff;
  }

  public void setStaff(Staff staff) {
    this.staff = staff;
  }
}

九 创建业务接口

员工业务接口StaffService

package com.sixa.demo.service;

import com.sixa.demo.entity.Dept;
import com.sixa.demo.entity.Staff;

import java.util.List;

/**
 * @author liuan@dist.com.cn
 * @data 2021/7/30
 */
public interface StaffService {
  void insert(Staff staff);
  void deleteById(int id);
  void update(Staff staff);
  Staff findById(int id);
  List<Staff> findByName(String name);
  List<Staff> findAll();
  List<Staff> findAllByPage(int pageNum);
  List<Staff> findByDept(Dept dept);
  List<Staff> findByAge(int age);
}

部门业务接口DeptService

package com.sixa.demo.service;

import com.sixa.demo.entity.Dept;

import java.util.List;

/**
 * @author liuan@dist.com.cn
 * @data 2021/7/30
 */
public interface DeptService {
  void insert(Dept dept);
  void deleteById(int id);
  void update(Dept dept);
  Dept findById(int id);
  Dept findByName(String name);
  List<Dept> findAll();
}

工作业务接口SalaryService

package com.sixa.demo.service;

import com.sixa.demo.entity.Dept;
import com.sixa.demo.entity.Salary;
import com.sixa.demo.entity.Staff;
import com.sixa.demo.entity.dto.SalaryDTO;
import com.sixa.demo.entity.vo.PageVO;
import org.springframework.data.domain.Page;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * @author liuan@dist.com.cn
 * @data 2021/7/30
 */
public interface SalaryService {
  void insert(Salary salary);
  void deleteById(int id);
  void update(Salary salary);
  Salary findById(int id);
  List<Salary> findByStaff(Staff staff);
  List<Salary> findAll();
  PageVO<Salary> findAllByPage(int pageNum);
  List<Salary> findByDept(Dept dept);
  List<Salary> findByDeptName(String deptName);
  List<Salary> findByMoney(int Money);
  List<SalaryDTO> findByStaff_Age(int age);
  List<Salary> findBySpec(float money,int age);
}

十 创建Dao层接口

员工Dao层接口StaffDao

package com.sixa.demo.dao;

import com.sixa.demo.entity.Dept;
import com.sixa.demo.entity.Staff;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.List;

/**
 * @author liuan@dist.com.cn
 * @data 2021/7/30
 */
public interface StaffDao extends JpaRepository<Staff,Integer> {
  List<Staff> findByName(String name);
  List<Staff> findByDept(Dept dept);
  List<Staff> findByAge(int age);
  Page<Staff> findAll(Pageable pageable);
}

部门Dao层接口

package com.sixa.demo.dao;

import com.sixa.demo.entity.Dept;
import org.springframework.data.jpa.repository.JpaRepository;


/**
 * @author liuan@dist.com.cn
 * @data 2021/7/30
 */
public interface DeptDao extends JpaRepository<Dept,Integer> {
  Dept findByName(String name);
}

工资Dao层接口

package com.sixa.demo.dao;

import com.sixa.demo.entity.Dept;
import com.sixa.demo.entity.Salary;
import com.sixa.demo.entity.Staff;
import com.sixa.demo.entity.dto.SalaryDTO;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;

import java.util.List;

/**
 * @author liuan@dist.com.cn
 * @data 2021/7/30
 */
public interface SalaryDao extends JpaRepository<Salary,Integer>, JpaSpecificationExecutor<Salary> {
  List<Salary> findByStaff(Staff staff);
  Page<Salary> findAll(Pageable pageable);
  List<Salary> findByStaff_Dept(Dept dept);

  List<Salary> findByStaff_DeptDeptName(String deptName);

  @Query(value = "select * from salary where money > ?1",nativeQuery = true)
  List<Salary> query(int money);

  @Query(value = "select new com.sixa.demo.entity.dto.SalaryDTO(s.id as id,st.staffName as staffName,s.money as money,s.time as time) from Salary s,Staff st where s.staffId=st.id and st.age>=?1")
  List<SalaryDTO> findByStaff_Age(int age);
}

十一 创建业务实现类

员工业务实现类StaffServiceImp

package com.sixa.demo.controller;

import com.alibaba.dubbo.config.annotation.Reference;
import com.sixa.demo.entity.Dept;
import com.sixa.demo.entity.Staff;
import com.sixa.demo.entity.dto.StaffDTO;
import com.sixa.demo.entity.vo.PageVO;
import com.sixa.demo.service.StaffService;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @author liuan@dist.com.cn
 * @data 2021/7/30
 */
@RestController
public class StaffController {
  @Reference
  private StaffService staffService;
  @PostMapping("/staff")
  public String add(Staff staff){
    staffService.insert(staff);
    return "添加成功";
  }

  @DeleteMapping("/staff/{id}")
  public String delete(@PathVariable("id") int id){
    staffService.deleteById(id);
    return "删除成功";
  }

  @PutMapping("/staff")
  public String update(Staff staff){
    staffService.update(staff);
    return "修改成功";
  }

  @GetMapping("/staff/{id}")
  public StaffDTO findById(@PathVariable("id")int id){
    return staffService.findById(id);
  }

  @GetMapping("/staffs")
  public List<Staff> findAll(){
    return staffService.findAll();
  }
  @GetMapping("/staffs/name/{name}")
  public List<Staff> findByName(@PathVariable("name") String name){
    return staffService.findByName(name);
  }

  @GetMapping("/staffs/{pageNum}")
  public PageVO<Staff> findAllByPage(@PathVariable("pageNum")int pageNum){
    return staffService.findAllByPage(pageNum);
  }

  @GetMapping("/staffs/age/{age}")
  public List<Staff> findByAge(@PathVariable("age")int age){
    return staffService.findByAge(age);
  }
  @GetMapping("/staffs/dept")
  public List<Staff> findByDept(Dept dept){
    return staffService.findByDept(dept);
  }
}

部门业务实现类DeptServiceImp

package com.sixa.demo.service;

import com.alibaba.dubbo.config.annotation.Service;
import com.sixa.demo.dao.DeptDao;
import com.sixa.demo.entity.Dept;
import org.springframework.beans.factory.annotation.Autowired;

import java.util.List;
import java.util.Optional;

/**
 * @author liuan@dist.com.cn
 * @data 2021/7/30
 */
@Service
public class DeptServiceImp implements DeptService {
  @Autowired
  private DeptDao deptDao;
  @Override
  public void insert(Dept dept) {
    Optional.ofNullable(dept).orElseThrow(()->{return new IllegalAccessError("dept不能为空");});
    deptDao.save(dept);
  }

  @Override
  public void deleteById(int id) {
    Optional.ofNullable(id).orElseThrow(()->{return new IllegalAccessError("id不能为空");});
    deptDao.delete(id);
  }

  @Override
  public void update(Dept dept) {
    Optional.ofNullable(dept).orElseThrow(()->{return new IllegalAccessError("dept不能为空");});
    deptDao.save(dept);
  }

  @Override
  public Dept findById(int id) {
    Optional.ofNullable(id).orElseThrow(()->{return new IllegalAccessError("id不能为空");});
    Dept dept = deptDao.findOne(id);
    return dept;
  }

  @Override
  public Dept findByName(String name) {
    Optional.ofNullable(name).orElseThrow(()->{return new IllegalAccessError("name不能为空");});
    Dept dept = deptDao.findByName(name);
    return dept;
  }

  @Override
  public List<Dept> findAll() {
    List<Dept> deptList = deptDao.findAll();
    return deptList;
  }
}

工资业务实现类SalaryServiceImp

package com.sixa.demo.service;

import com.alibaba.dubbo.config.annotation.Service;
import com.sixa.demo.dao.SalaryDao;
import com.sixa.demo.entity.Dept;
import com.sixa.demo.entity.Salary;
import com.sixa.demo.entity.Staff;
import com.sixa.demo.entity.dto.SalaryDTO;
import com.sixa.demo.entity.vo.PageVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.domain.Specification;

import javax.persistence.criteria.*;
import java.util.List;
import java.util.Map;
import java.util.Optional;

/**
 * @author liuan@dist.com.cn
 * @data 2021/7/30
 */
@Service
public class SalaryServiceImp implements SalaryService {

  @Autowired
  private SalaryDao salaryDao;
  @Override
  public void insert(Salary salary) {
    Optional.ofNullable(salary).orElseThrow(()->{return new IllegalArgumentException("salary不能为空");});
    salaryDao.save(salary);
  }

  @Override
  public void deleteById(int id) {
    Optional.ofNullable(id).orElseThrow(()->{return new IllegalArgumentException("id不能为空");});
    salaryDao.delete(id);
  }

  @Override
  public void update(Salary salary) {
    Optional.ofNullable(salary).orElseThrow(()->{return new IllegalArgumentException("salary不能为空");});
    salaryDao.save(salary);
  }

  @Override
  public Salary findById(int id) {
    Optional.ofNullable(id).orElseThrow(()->{return new IllegalArgumentException("id不能为空");});
    Salary salary = salaryDao.findOne(id);
    return salary;
  }

  @Override
  public List<Salary> findByStaff(Staff staff) {
    Optional.ofNullable(staff).orElseThrow(()->{return new IllegalArgumentException("staff不能为空");});
    List<Salary> salaryList = salaryDao.findByStaff(staff);
    return salaryList;
  }

  @Override
  public List<Salary> findAll() {
    List<Salary> salaryList = salaryDao.findAll();
    return salaryList;
  }

  @Override
  public PageVO<Salary> findAllByPage(int pageNum) {
    Optional.ofNullable(pageNum).orElseThrow(()->{return new IllegalArgumentException("pageNum不能为空");});
    Pageable pageable = new PageRequest(pageNum-1,5);
    PageVO<Salary> pageVO = new PageVO<>();
    Page<Salary> salaryPage = salaryDao.findAll(pageable);
    pageVO.setPageNum(pageNum);
    pageVO.setSize(salaryPage.getSize());
    pageVO.setDataList(salaryPage.getContent());
    return pageVO;
  }

  @Override
  public List<Salary> findByDept(Dept dept) {
    Optional.ofNullable(dept).orElseThrow(()->{return new IllegalArgumentException("dept不能为空");});
    return salaryDao.findByStaff_Dept(dept);
  }

  @Override
  public List<Salary> findByDeptName(String deptName) {
    Optional.ofNullable(deptName).orElseThrow(()->{return new IllegalArgumentException("deptName不能为空");});
    return salaryDao.findByStaff_DeptDeptName(deptName);
  }

  @Override
  public List<Salary> findByMoney(int money) {
    Optional.ofNullable(money).orElseThrow(()->{return new IllegalArgumentException("money不能为空");});
    return salaryDao.query(money);
  }

  @Override
  public List<SalaryDTO> findByStaff_Age(int age) {
    Optional.ofNullable(age).orElseThrow(()->{return new IllegalArgumentException("age不能为空");});
    return salaryDao.findByStaff_Age(age);
  }

  @Override
  public List<Salary> findBySpec(float money,int age) {
    Specification<Salary> spec = new Specification<Salary>() {
      @Override
      public Predicate toPredicate(Root<Salary> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {
        Join<Salary, Staff> join = root.join("staff", JoinType.INNER);
        Predicate p1 = criteriaBuilder.greaterThanOrEqualTo(join.get("age").as(Integer.class), age);
        Predicate p2 = criteriaBuilder.greaterThanOrEqualTo(root.get("money").as(Float.class), money);
        Predicate predicate = criteriaBuilder.and(p1, p2);
        return predicate;
      }
    };
    return salaryDao.findAll(spec);
  }
}

十二 创建服务消费者

在这里插入图片描述

十三 服务消费者引入依赖

     <dependencies>

        <dependency>
            <groupId>com.sixa.demo</groupId>
            <artifactId>api</artifactId>
            <version>${project.version}</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.dubbo/dubbo -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
        </dependency>

        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
        </dependency>

        <dependency>
            <groupId>io.netty</groupId>
            <artifactId>netty-all</artifactId>
            <version>4.1.39.Final</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        
        <dependency>
            <groupId>com.101tec</groupId>
            <artifactId>zkclient</artifactId>
        </dependency>

    </dependencies>

十四 创建控制层

员工控制层类StaffController

package com.sixa.demo.controller;

import com.alibaba.dubbo.config.annotation.Reference;
import com.sixa.demo.entity.Dept;
import com.sixa.demo.entity.Staff;
import com.sixa.demo.entity.dto.StaffDTO;
import com.sixa.demo.entity.vo.PageVO;
import com.sixa.demo.service.StaffService;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @author liuan@dist.com.cn
 * @data 2021/7/30
 */
@RestController
public class StaffController {
  @Reference
  private StaffService staffService;
  @PostMapping("/staff")
  public String add(StaffDTO staffDTO){
    staffService.insert(staffDTO);
    return "添加成功";
  }

  @DeleteMapping("/staff/{id}")
  public String delete(@PathVariable("id") int id){
    staffService.deleteById(id);
    return "删除成功";
  }

  @PutMapping("/staff")
  public String update(Staff staff){
    staffService.update(staff);
    return "修改成功";
  }

  @GetMapping("/staff/{id}")
  public StaffDTO findById(@PathVariable("id")int id){
    return staffService.findById(id);
  }

  @GetMapping("/staffs")
  public List<Staff> findAll(){
    return staffService.findAll();
  }
  @GetMapping("/staffs/name/{name}")
  public List<Staff> findByName(@PathVariable("name") String name){
    return staffService.findByName(name);
  }

  @GetMapping("/staffs/{pageNum}")
  public PageVO<Staff> findAllByPage(@PathVariable("pageNum")int pageNum){
    return staffService.findAllByPage(pageNum);
  }

  @GetMapping("/staffs/age/{age}")
  public List<Staff> findByAge(@PathVariable("age")int age){
    return staffService.findByAge(age);
  }
  @GetMapping("/staffs/dept")
  public List<Staff> findByDept(Dept dept){
    return staffService.findByDept(dept);
  }
}

部门控制层类DeptController

package com.sixa.demo.controller;

import com.alibaba.dubbo.config.annotation.Reference;
import com.sixa.demo.entity.Dept;
import com.sixa.demo.service.DeptService;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @author liuan@dist.com.cn
 * @data 2021/8/2
 */
@RestController
public class DeptController {
  @Reference
  private DeptService deptService;

  @PostMapping("/dept")
  public String add(Dept dept){
    deptService.insert(dept);
    return "添加成功";
  }

  @DeleteMapping("/dept/{id}")
  public String delete(@PathVariable("id")int id){
    deptService.deleteById(id);
    return "删除成功";
  }

  @PutMapping("/dept")
  public String update(Dept dept){
    deptService.update(dept);
    return "修改成功";
  }
  @GetMapping("/dept/{id}")
  public Dept findById(@PathVariable("id")int id){
    return deptService.findById(id);
  }
  @GetMapping("/dept/name/{name}")
  public Dept findByName(@PathVariable("name")String name){
    return deptService.findByName(name);
  }
  @GetMapping("/depts")
  public List<Dept> findAll(){
    return deptService.findAll();
  }
}

工资控制层类SalaryController

package com.sixa.demo.controller;

import com.alibaba.dubbo.config.annotation.Reference;
import com.sixa.demo.entity.Dept;
import com.sixa.demo.entity.Salary;
import com.sixa.demo.entity.Staff;
import com.sixa.demo.entity.dto.SalaryDTO;
import com.sixa.demo.entity.vo.PageVO;
import com.sixa.demo.service.SalaryService;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.Map;

/**
 * @author liuan@dist.com.cn
 * @data 2021/8/2
 */
@RestController
public class SalaryController {

  @Reference
  private SalaryService salaryService;

  @PostMapping("/salary")
  public String add(Salary salary){
    salaryService.insert(salary);
    return "添加成功";
  }

  @DeleteMapping("/salary/{id}")
  public String delete(@PathVariable("id")int id){
    salaryService.deleteById(id);
    return "删除成功";
  }

  @PutMapping("/salary")
  public String update(Salary salary){
    salaryService.update(salary);
    return "修改成功";
  }

  @GetMapping("/salary/{id}")
  public Salary findById(@PathVariable("id")int id){
    return salaryService.findById(id);
  }

  @GetMapping("/salaries/{pageNum}")
  public PageVO<Salary> findAllByPage(@PathVariable("pageNum")int pageNum){
    return salaryService.findAllByPage(pageNum);
  }

  @GetMapping("/salaries/staff")
  public List<Salary> findByStaff(Staff staff){
    return salaryService.findByStaff(staff);
  }

  @GetMapping("/salaries/dept")
  public List<Salary> findByDept(Dept dept){
    return salaryService.findByDept(dept);
  }
  @GetMapping("/salaries/deptName")
  public List<Salary> findByDeptName(String deptName){
    return salaryService.findByDeptName(deptName);
  }
  @GetMapping("/salaries/money")
  public List<Salary> findByMoney(int money){
    return salaryService.findByMoney(money);
  }

  @GetMapping("/salaries/age")
  public List<SalaryDTO> findByAge(int age){
    return salaryService.findByStaff_Age(age);
  }

  @GetMapping("/salaries/spec")
  public List<Salary> findBySpec(float money,int age){
    return salaryService.findBySpec(money,age);
  }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值