Mongodbinspringjh

Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 7

package controller

StudentController.java

package com.example.springinmongodb.controller;

import com.example.springinmongodb.entity.Student;
import com.example.springinmongodb.service.StudentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/api/student")
public class StudentController {

@Autowired
StudentService studentService;

@PostMapping("/create")
public Student createStudent(@RequestBody Student student){
return studentService.createStudent(student);
}

@GetMapping("/getById/{id}")
public Student getStudentById(@PathVariable String id){
return studentService.getStudentById(id);
}

@GetMapping("/all")
public List<Student>getAllStudents(@RequestBody Student student){
return studentService.getAllStudents();
}

@PutMapping("/update")
public Student updateStudent(@RequestBody Student student){
return studentService.updateStudent(student);
}

@DeleteMapping("/delete/{id}")
public String deleteStudent(@PathVariable String id) {
studentService.deleteStudent(id);
return "Deleted";
}

@GetMapping("/studentsByName/{name}")
public List<Student>studentsByName(@PathVariable String name){
return studentService.getStudentByName(name);
}

@GetMapping("/studentsByNameAndMail")
public Student studentsByNameAndMail(@RequestParam String name,@RequestParam
String email){
return studentService.studentsByNameOrMail(name,email);
}

@GetMapping("/studentsByNameOrMail")
public Student studentsByNameOrMail(@RequestParam String name,@RequestParam
String email){
return studentService.studentsByNameOrMail(name,email);
}

@GetMapping("/allWithPagination")
public List<Student>getAllWithPagination(@RequestParam int pageNo,@RequestParam
int pageSize){
return studentService.getAllWithPagination(pageNo,pageSize);
}

@GetMapping("/allWithSorting")
public List<Student>allWithSorting(){
return studentService.allWithSorting();
}

@GetMapping("/byDepartmentName")
public List<Student>byDepartmentName(@RequestParam String deptName){
return studentService.byDepartmentName(deptName);
}

@GetMapping("/bySubjectName")
public List<Student>bySubjectName(@RequestParam String subName){
return studentService.bySubjectName(subName);
}

@GetMapping("/emailLike")
public List<Student>emailLike(@RequestParam String email){
return studentService.emailLike(email);
}

@GetMapping("/nameStartsWith")
public List<Student>nameStartsWith(@RequestParam String name){
return studentService.nameStartsWith(name);
}
}

package demo
SringinmongodbApplication

package com.example.springinmongodb.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;

@SpringBootApplication
@EnableMongoRepositories("com.example.repository")
@ComponentScan("com.example.*")
public class SpringinmongodbApplication {

public static void main(String[] args) {


SpringApplication.run(SpringinmongodbApplication.class, args);
}

}
package entity
1.Department.java

package com.example.springinmongodb.entity;
import org.springframework.data.mongodb.core.mapping.Field;

public class Department {


@Field(name = "department_name")
private String departmentName;

private String location;

public String getDepartmentName() {


return departmentName;
}

public void setDepartmentName(String departmentName) {


this.departmentName = departmentName;
}

public String getLocation() {


return location;
}

public void setLocation(String location) {


this.location = location;
}
}

2.Student.java

package com.example.springinmongodb.entity;

import org.springframework.data.annotation.Id;
import org.springframework.data.annotation.Transient;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field;

import java.util.List;

@Document(collection = "student")
public class Student {

@Id
private String id;

private String name;

@Field(name = "mail")
private String email;

private Department department;

private List<Subject> subjects;

@Transient
private double percentage;
public String getId() {
return id;
}

public void setId(String id) {


this.id = id;
}

public String getName() {


return name;
}

public void setName(String name) {


this.name = name;
}

public String getEmail() {


return email;
}

public void setEmail(String email) {


this.email = email;
}

public Department getDepartment() {


return department;
}

public void setDepartment(Department department) {


this.department = department;
}

public List<Subject> getSubjects() {


return subjects;
}

public void setSubjects(List<Subject> subjects) {


this.subjects = subjects;
}

public double getPercentage() {


if (subjects != null && !subjects.isEmpty()) {
int total = 0;
for (Subject subject : subjects) {
total += subject.getMarksObtained();
}
return total / (double) subjects.size();
}
return 0.00;
}

public void setPercentage(double percentage) {


this.percentage = percentage;
}
}

3.Subject.java
package com.example.springinmongodb.entity;

import org.springframework.data.mongodb.core.mapping.Field;

public class Subject {


@Field(name = "Subject_name")
private String subjectName;

@Field(name = "marks_Obtained")
private int marksObtained;

public String getSubjectName() {


return subjectName;
}

public void setSubjectName(String subjectName) {


this.subjectName = subjectName;
}

public int getMarksObtained() {


return marksObtained;
}

public void setMarksObtained(int marksObtained) {


this.marksObtained = marksObtained;
}
}

package repository
StudentRepository.interface

package com.example.springinmongodb.repository;

import com.example.springinmongodb.entity.Student;
import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface StudentRepository extends MongoRepository<Student,String> {

List<Student>findByName(String name);

Student findByEmailAndName(String email,String name);

Student findByNameOrEmail(String name, String email);

List<Student>findByDepartmentName(String department);

List<Student>findBySubjectsSubjectName(String subName);

List<Student>findByEmailIsLike(String email);

List<Student>findByNameStartsWith(String name);
}
package service
StudentService.java

package com.example.springinmongodb.service;

import com.example.springinmongodb.entity.Student;
import com.example.springinmongodb.repository.StudentRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Service;

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

@Service
public class StudentService {

@Autowired
private StudentRepository studentRepository;

public Student createStudent(Student student) {


return studentRepository.save(student);
}

public Student getStudentById(String id) {


Optional<Student> studentOptional = studentRepository.findById(id);
return studentOptional.orElse(null); // Return null or handle as
appropriate
}

public List<Student> getAllStudents() {


return studentRepository.findAll();
}

public Student updateStudent(Student student) {


return studentRepository.save(student);
}

public String deleteStudent(String id) {


studentRepository.deleteById(id);
return "Student has been deleted";
}

public List<Student> getStudentByName(String name) {


return studentRepository.findByName(name);
}

public Student studentByNameAndMail(String name, String email) {


return studentRepository.findByEmailAndName(email, name);
}

public Student studentsByNameOrMail(String name, String email) {


return studentRepository.findByNameOrEmail(name, email);
}
public List<Student> getAllWithPagination(int pageNo, int pageSize) {
Pageable pageable = PageRequest.of(pageNo - 1, pageSize);
return studentRepository.findAll(pageable).getContent(); // Corrected this
line
}

public List<Student> allWithSorting() {


Sort sort = Sort.by(Sort.Direction.ASC, "name", "email");
return studentRepository.findAll(sort);
}

public List<Student> byDepartmentName(String deptName) {


return studentRepository.findByDepartmentName(deptName);
}

public List<Student> bySubjectName(String subName) {


return studentRepository.findBySubjectsSubjectName(subName);
}

public List<Student> emailLike(String email) {


return studentRepository.findByEmailIsLike(email);
}

public List<Student> nameStartsWith(String name) {


return studentRepository.findByNameStartsWith(name);
}
}

application.properties

spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
spring.data.mongodb.database=spring_mongo
spring.data.mongodb.username=sam
spring.data.mongodb.password=sam2007

You might also like