Skip to content

Commit 5759e71

Browse files
committed
feat: implement Employee management system with repository, service, and controller layers
1 parent 34dcf91 commit 5759e71

File tree

8 files changed

+649
-0
lines changed

8 files changed

+649
-0
lines changed

07-JPA Hibernate/Mini project-Employee Management System(using Spring Data REST)/README.md

Lines changed: 470 additions & 0 deletions
Large diffs are not rendered by default.
657 KB
Loading
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.example.rest;
2+
3+
import org.springframework.boot.SpringApplication;
4+
import org.springframework.boot.autoconfigure.SpringBootApplication;
5+
6+
@SpringBootApplication
7+
public class EmsProjectApplication {
8+
9+
public static void main(String[] args) {
10+
SpringApplication.run(EmsProjectApplication.class, args);
11+
}
12+
13+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package com.example.rest.controller;
2+
3+
import java.util.List;
4+
import java.util.Optional;
5+
6+
import org.springframework.beans.factory.annotation.Autowired;
7+
import org.springframework.web.bind.annotation.DeleteMapping;
8+
import org.springframework.web.bind.annotation.GetMapping;
9+
import org.springframework.web.bind.annotation.PathVariable;
10+
import org.springframework.web.bind.annotation.PostMapping;
11+
import org.springframework.web.bind.annotation.PutMapping;
12+
import org.springframework.web.bind.annotation.RequestBody;
13+
import org.springframework.web.bind.annotation.RequestMapping;
14+
import org.springframework.web.bind.annotation.RestController;
15+
16+
import com.example.rest.entity.Employee;
17+
import com.example.rest.service.EmployeeService;
18+
19+
@RestController
20+
@RequestMapping("/api")
21+
public class EmployeeController {
22+
@Autowired
23+
private EmployeeService employeeService;
24+
25+
@GetMapping("/employees")
26+
public List<Employee> getEmployees() {
27+
return employeeService.findAll();
28+
}
29+
30+
@GetMapping("/employees/{id}")
31+
public Optional<Employee> getEmployee(@PathVariable int id) {
32+
return employeeService.findById(id);
33+
}
34+
35+
@PostMapping("/employees")
36+
public Employee addEmployee(@RequestBody Employee employee) {
37+
return employeeService.save(employee);
38+
}
39+
40+
@PutMapping("/employees")
41+
public Employee updateEmployee(@RequestBody Employee employee) {
42+
return employeeService.save(employee);
43+
}
44+
45+
@DeleteMapping("/employees/{id}")
46+
public String deleteEmployee(@PathVariable int id) {
47+
Optional<Employee> employee = employeeService.findById(id);
48+
49+
if (employee == null) {
50+
throw new RuntimeException("Employee not found with id: " + id);
51+
} else {
52+
employeeService.deleteById(id);
53+
}
54+
55+
return "Employee deleted with id: " + id;
56+
}
57+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package com.example.rest.entity;
2+
3+
import jakarta.persistence.Column;
4+
import jakarta.persistence.Entity;
5+
import jakarta.persistence.GeneratedValue;
6+
import jakarta.persistence.GenerationType;
7+
import jakarta.persistence.Id;
8+
import jakarta.persistence.Table;
9+
import lombok.AllArgsConstructor;
10+
import lombok.Data;
11+
import lombok.NoArgsConstructor;
12+
13+
@Data
14+
@NoArgsConstructor
15+
@AllArgsConstructor
16+
@Entity
17+
@Table(name = "employee")
18+
public class Employee {
19+
20+
@Id
21+
@Column(name = "id")
22+
@GeneratedValue(strategy = GenerationType.IDENTITY)
23+
private int id;
24+
25+
@Column(name = "first_name")
26+
private String firstName;
27+
28+
@Column(name = "last_name")
29+
private String lastName;
30+
@Column(name = "email")
31+
private String email;
32+
33+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package com.example.rest.repository;
2+
3+
import org.springframework.data.jpa.repository.JpaRepository;
4+
import org.springframework.stereotype.Repository;
5+
6+
import com.example.rest.entity.Employee;
7+
8+
@Repository
9+
public interface EmployeeRepository extends JpaRepository<Employee, Integer> {
10+
11+
// provide CRUD methods for free
12+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.example.rest.service;
2+
3+
import java.util.List;
4+
import java.util.Optional;
5+
6+
import com.example.rest.entity.Employee;
7+
8+
public interface EmployeeService {
9+
10+
// save and update
11+
public Employee save(Employee employee);
12+
13+
public Optional<Employee> findById(int id);
14+
15+
public List<Employee> findAll();
16+
17+
public void deleteById(int id);
18+
19+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package com.example.rest.service;
2+
3+
import java.util.List;
4+
import java.util.Optional;
5+
6+
import org.springframework.beans.factory.annotation.Autowired;
7+
import org.springframework.stereotype.Service;
8+
9+
import com.example.rest.entity.Employee;
10+
import com.example.rest.repository.EmployeeRepository;
11+
12+
import jakarta.transaction.Transactional;
13+
14+
@Service
15+
public class EmployeeServiceImpl implements EmployeeService {
16+
17+
@Autowired
18+
private EmployeeRepository employeeRepository;
19+
20+
@Override
21+
public Optional<Employee> findById(int id) {
22+
return employeeRepository.findById(id);
23+
24+
}
25+
26+
@Override
27+
public List<Employee> findAll() {
28+
return employeeRepository.findAll();
29+
30+
}
31+
32+
@Transactional
33+
@Override
34+
public Employee save(Employee employee) {
35+
return employeeRepository.save(employee);
36+
}
37+
38+
@Transactional
39+
@Override
40+
public void deleteById(int id) {
41+
employeeRepository.deleteById(id);
42+
43+
}
44+
45+
}

0 commit comments

Comments
 (0)