基于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);
}
}