Open Eclipse IDE -> File-> import->Existing Maven Project<\/code>.<\/p>\n\n\n\nThen import the project from a specific directory.<\/p>\n\n\n\n
Open Java Resources-> src\/main\/java<\/p>\n\n\n\n
then create packages<\/p>\n\n\n\n
com.univ.app.controller
com.univ.app.dao
com.univ.app.entity
com.univ.app.service<\/p>\n\n\n\n
Creating MySql Database<\/h2>\n\n\n\n
We have created a user and password and given all privileges to that account. created a database and created a table student.<\/p>\n\n\n\n
CREATE USER 'sspu_userx25'@'localhost' IDENTIFIED BY 'MV7GG5TV2312';\nGRANT ALL ON *.* TO 'sspu_userx25'@'localhost';\ncreate database sspu;\nuse sspu;\ncreate table student(\nid bigint(20) unsigned NOT NULL AUTO_INCREMENT,\nroll_no bigint(20) unsigned NOT NULL,\nfname varchar(100),\nmname varchar(100),\nlname varchar(30),\ndob date,\nadmission_date date,\nmail_id varchar(100),\nmobile_no varchar(100),\nsemester varchar(100),\ncourse varchar(100),\nadd_date timestamp DEFAULT CURRENT_TIMESTAMP,\nprimary key(id),\nunique key(mobile_no),\nunique key(mail_id)\n)ENGINE=InnoDB DEFAULT CHARSET=utf8; \n<\/pre>\n\n\n\nTo connect with the database all properties are at application.properties<\/code> available in src\/main\/resources<\/code><\/p>\n\n\n\nspring.jpa.hibernate.ddl-auto=update\nspring.datasource.url=jdbc:mysql:\/\/localhost:3306\/sspu\nspring.datasource.username=sspu_userx25\nspring.datasource.password=MV7GG5TV2312\nspring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver\nspring.jpa.show-sql: true\n<\/pre>\n\n\n\nCreating Files in Spring Boot Project<\/h2>\n\n\n\nEntity Class<\/h3>\n\n\n\n
inside the com.univ.app.entity create a Student class (Student.java)<\/p>\n\n\n\n
This class contains all filed that are available in the database and also its mapping.<\/p>\n\n\n\n
package com.univ.app.entity;\n\nimport java.sql.Date;\nimport java.sql.Timestamp;\nimport java.util.Objects;\n\nimport jakarta.persistence.Column;\nimport jakarta.persistence.Entity;\nimport jakarta.persistence.GeneratedValue;\nimport jakarta.persistence.GenerationType;\nimport jakarta.persistence.Id;\nimport jakarta.persistence.Table;\n\n@Entity\n@Table(name = \"student\")\npublic class Student {\n\t@Id\n\t@GeneratedValue(strategy = GenerationType.AUTO)\n\t@Column(name = \"id\")\n\tprivate Long id;\n\t@Column(name = \"roll_no\", nullable = false)\n\tprivate long rollNo;\n\t@Column(name = \"fname\", nullable = false)\n\tprivate String firstName;\n\t@Column(name = \"mname\", nullable = false)\n\tprivate String middleName;\n\t@Column(name = \"lname\", nullable = false)\n\tprivate String lastName;\n\t@Column(name = \"dob\", nullable = false)\n\tprivate Date dob;\n\t@Column(name = \"admission_date\", nullable = false)\n\tprivate Date admissionDate;\n\t@Column(name = \"mail_id\", nullable = false)\n\tprivate String mailId;\n\t@Column(name = \"mobile_no\", nullable = false)\n\tprivate String mobileNo;\n\t@Column(name = \"semester\", nullable = false)\n\tprivate String semester;\n\t@Column(name = \"course\", nullable = false)\n\tprivate String course;\n\t@Column(name = \"add_date\")\n\tprivate Timestamp addDate;\n\n\tpublic Student() {\n\n\t}\n\n\tpublic Student(Long id, long rollNo, String firstName, String middleName, String lastName, Date dob,\n\t\t\tDate admissionDate, String mailId, String mobileNo, String semester, String course, Timestamp addDate) {\n\t\tsuper();\n\t\tthis.id = id;\n\t\tthis.rollNo = rollNo;\n\t\tthis.firstName = firstName;\n\t\tthis.middleName = middleName;\n\t\tthis.lastName = lastName;\n\t\tthis.dob = dob;\n\t\tthis.admissionDate = admissionDate;\n\t\tthis.mailId = mailId;\n\t\tthis.mobileNo = mobileNo;\n\t\tthis.semester = semester;\n\t\tthis.course = course;\n\t\tthis.addDate = addDate;\n\t}\n\n\t@Override\n\tpublic int hashCode() {\n\t\treturn Objects.hash(addDate, admissionDate, course, dob, firstName, id, lastName, mailId, middleName, mobileNo,\n\t\t\t\trollNo, semester);\n\t}\n\n\t@Override\n\tpublic boolean equals(Object obj) {\n\t\tif (this == obj)\n\t\t\treturn true;\n\t\tif (obj == null)\n\t\t\treturn false;\n\t\tif (getClass() != obj.getClass())\n\t\t\treturn false;\n\t\tStudent other = (Student) obj;\n\t\treturn Objects.equals(addDate, other.addDate) && Objects.equals(admissionDate, other.admissionDate)\n\t\t\t\t&& Objects.equals(course, other.course) && Objects.equals(dob, other.dob)\n\t\t\t\t&& Objects.equals(firstName, other.firstName) && Objects.equals(id, other.id)\n\t\t\t\t&& Objects.equals(lastName, other.lastName) && Objects.equals(mailId, other.mailId)\n\t\t\t\t&& Objects.equals(middleName, other.middleName) && Objects.equals(mobileNo, other.mobileNo)\n\t\t\t\t&& rollNo == other.rollNo && Objects.equals(semester, other.semester);\n\t}\n\n\t@Override\n\tpublic String toString() {\n\t\treturn \"Student [id=\" + id + \", rollNo=\" + rollNo + \", firstName=\" + firstName + \", middleName=\" + middleName\n\t\t\t\t+ \", lastName=\" + lastName + \", dob=\" + dob + \", admissionDate=\" + admissionDate + \", mailId=\" + mailId\n\t\t\t\t+ \", mobileNo=\" + mobileNo + \", semester=\" + semester + \", course=\" + course + \", addDate=\" + addDate\n\t\t\t\t+ \"]\";\n\t}\n\n\tpublic Long getId() {\n\t\treturn id;\n\t}\n\n\tpublic void setId(Long id) {\n\t\tthis.id = id;\n\t}\n\n\tpublic long getRollNo() {\n\t\treturn rollNo;\n\t}\n\n\tpublic void setRollNo(long rollNo) {\n\t\tthis.rollNo = rollNo;\n\t}\n\n\tpublic String getFirstName() {\n\t\treturn firstName;\n\t}\n\n\tpublic void setFirstName(String firstName) {\n\t\tthis.firstName = firstName;\n\t}\n\n\tpublic String getMiddleName() {\n\t\treturn middleName;\n\t}\n\n\tpublic void setMiddleName(String middleName) {\n\t\tthis.middleName = middleName;\n\t}\n\n\tpublic String getLastName() {\n\t\treturn lastName;\n\t}\n\n\tpublic void setLastName(String lastName) {\n\t\tthis.lastName = lastName;\n\t}\n\n\tpublic Date getDob() {\n\t\treturn dob;\n\t}\n\n\tpublic void setDob(Date dob) {\n\t\tthis.dob = dob;\n\t}\n\n\tpublic Date getAdmissionDate() {\n\t\treturn admissionDate;\n\t}\n\n\tpublic void setAdmissionDate(Date admissionDate) {\n\t\tthis.admissionDate = admissionDate;\n\t}\n\n\tpublic String getMailId() {\n\t\treturn mailId;\n\t}\n\n\tpublic void setMailId(String mailId) {\n\t\tthis.mailId = mailId;\n\t}\n\n\tpublic String getMobileNo() {\n\t\treturn mobileNo;\n\t}\n\n\tpublic void setMobileNo(String mobileNo) {\n\t\tthis.mobileNo = mobileNo;\n\t}\n\n\tpublic String getSemester() {\n\t\treturn semester;\n\t}\n\n\tpublic void setSemester(String semester) {\n\t\tthis.semester = semester;\n\t}\n\n\tpublic String getCourse() {\n\t\treturn course;\n\t}\n\n\tpublic void setCourse(String course) {\n\t\tthis.course = course;\n\t}\n\n\tpublic Timestamp getAddDate() {\n\t\treturn addDate;\n\t}\n\n\tpublic void setAddDate(Timestamp addDate) {\n\t\tthis.addDate = addDate;\n\t}\n\n}\n\n<\/pre>\n\n\n\nController Class<\/h3>\n\n\n\n
Create StudentController inside com.univ.app.controller as below<\/p>\n\n\n\n
We have created basic methods to add, update, delete, and fetch the record, also included methods to fetch records based on semester and course and the user can also update few fields separately like mail id and mobileNo.<\/p>\n\n\n\n
The rest controller is used to access the data with different mapping styles like GetMapping, PostMapping, PutMapping etc.<\/p>\n\n\n\n
\npackage com.univ.app.controller;\nimport java.util.Optional;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.web.bind.annotation.DeleteMapping;\nimport org.springframework.web.bind.annotation.GetMapping;\nimport org.springframework.web.bind.annotation.PathVariable;\nimport org.springframework.web.bind.annotation.PostMapping;\nimport org.springframework.web.bind.annotation.PutMapping;\nimport org.springframework.web.bind.annotation.RequestBody;\nimport org.springframework.web.bind.annotation.RestController;\nimport com.univ.app.entity.Student;\nimport com.univ.app.service.StudentService;\n@RestController\npublic class StudentController {\n\t@Autowired\n\tStudentService service;\n\t@PostMapping(\"\/add-student\")\n\tpublic Student saveStudent(@RequestBody Student student) {\n\t\treturn service.saveStudent(student);\n\t}\n\t@PostMapping(\"\/add-students\")\n\tpublic Iterable saveStudent(@RequestBody Iterable students) {\n\t\treturn service.saveStudent(students);\n\t}\n\t@PutMapping(\"\/update-student\")\n\tpublic Student updateStudent(@RequestBody Student student) {\n\t\treturn service.saveorUpdateStudent(student);\n\t}\n\t@GetMapping(\"\/students\")\n\tpublic Iterable getStudents() {\n\t\treturn service.getStudents();\n\t}\n\t@GetMapping(\"\/student\/{id}\")\n\tpublic Optional getStudent(@PathVariable(\"id\") long id) {\n\t\treturn service.getStudent(id);\n\t}\n\t@GetMapping(\"\/student-fname\/{firstname}\")\n\tpublic Iterable getStudentbyFirstName(@PathVariable(\"firstname\") String firstName) {\n\t\treturn service.getStudentByFirstName(firstName);\n\t}\n\t@GetMapping(\"\/student-course\/{course}\")\n\tpublic Iterable getStudentByCourse(@PathVariable(\"course\") String course) {\n\t\treturn service.getStudentByCourse(course);\n\t}\n\t@GetMapping(\"\/student-semester\/{semester}\")\n\tpublic Iterable getStudentBySemester(@PathVariable(\"semester\") String semester) {\n\t\treturn service.getStudentBySemester(semester);\n\t}\n\t@GetMapping(\"\/student-update-mail\/{id}\/{emailId}\")\n\tpublic int updateStudentMail(@PathVariable(\"emailId\") String emailId, @PathVariable(\"id\") Long id) {\n\t\treturn service.UpdateEmailId(emailId, id);\n\t}\n\t@GetMapping(\"\/student-update-mobile\/{id}\/{mobileNo}\")\n\tpublic int updateStudentMobile(@PathVariable(\"mobileNo\") String mobileNo, @PathVariable(\"id\") Long id) {\n\t\treturn service.updateMobileNo(mobileNo, id);\n\t}\n\t@DeleteMapping(\"\/remove-student\/{id}\")\n\tpublic void deleteById(@PathVariable(\"id\") long id) {\n\t\tservice.deleteById(id);\n\t}\n}\n<\/pre>\n\n\n\nService class<\/h3>\n\n\n\n
StudentService.java inside com.univ.app.service<\/p>\n\n\n\n
@Service annotation is used to make it a service class and dao is autowired to interact with StudentDAO.<\/p>\n\n\n\n
\npackage com.univ.app.service;\nimport java.util.Optional;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Service;\nimport com.univ.app.dao.StudentDAO;\nimport com.univ.app.entity.Student;\n@Service\npublic class StudentService {\n\t@Autowired\n\tStudentDAO dao;\n\tpublic Student saveStudent(Student student) {\n\t\treturn dao.save(student);\n\t}\n\tpublic Iterable saveStudent(Iterable students) {\n\t\treturn dao.saveAll(students);\n\t}\n\tpublic Student saveorUpdateStudent(Student student) {\n\t\tOptional fetched = dao.findById(student.getId());\n\t\tStudent s = fetched.get();\n\t\ts.setFirstName(student.getFirstName());\n\t\ts.setMiddleName(student.getMiddleName());\n\t\ts.setLastName(student.getLastName());\n\t\ts.setDob(student.getDob());\n\t\ts.setAdmissionDate(student.getAdmissionDate());\n\t\ts.setMailId(student.getMailId());\n\t\ts.setMobileNo(student.getMobileNo());\n\t\ts.setSemester(student.getSemester());\n\t\ts.setCourse(student.getCourse());\n\t\ts.setSemester(student.getSemester());\n\t\treturn dao.save(s);\n\t}\n\tpublic Iterable getStudents() {\n\t\treturn dao.findAll();\n\t}\n\tpublic Optional getStudent(long id) {\n\t\treturn dao.findById(id);\n\t}\n\tpublic Iterable getStudentByFirstName(String firstName) {\n\t\treturn dao.findStudentByFisrtName(firstName);\n\t}\n\tpublic Iterable getStudentByCourse(String course) {\n\t\treturn dao.findStudentByCourse(course);\n\t}\n\tpublic Iterable getStudentBySemester(String semester) {\n\t\treturn dao.findStudentBySemester(semester);\n\t}\n\tpublic void deleteById(long id) {\n\t\tdao.deleteById(id);\n\t}\n\tpublic int UpdateEmailId(String emailId, Long id) {\n\t\treturn dao.updateEmailid(emailId, id);\n\t}\n\tpublic int updateMobileNo(String mobileNo, Long id) {\n\t\treturn dao.updateMobileNo(mobileNo, id);\n\t}\n}\n<\/pre>\n\n\n\nDAO class<\/h3>\n\n\n\n
@Repository annotation is used to access data from a database.<\/p>\n\n\n\n
StudentDAO extends JPARepositiiry.<\/p>\n\n\n\n
Created Query for finding students by first name, course, and semester also created query for updating email and mobileNo.<\/p>\n\n\n\n
\npackage com.univ.app.dao;\nimport org.springframework.data.jpa.repository.JpaRepository;\nimport org.springframework.data.jpa.repository.Modifying;\nimport org.springframework.data.jpa.repository.Query;\nimport org.springframework.stereotype.Repository;\nimport com.univ.app.entity.Student;\nimport jakarta.transaction.Transactional;\n@Repository\npublic interface StudentDAO extends JpaRepository {\n\t@Query(\"SELECT s FROM Student s WHERE s.firstName = ?1\")\n\tIterable findStudentByFisrtName(String firstName);\n\t@Query(\"SELECT s FROM Student s WHERE s.course = ?1\")\n\tIterable findStudentByCourse(String course);\n\t@Query(\"SELECT s FROM Student s WHERE s.semester = ?1\")\n\tIterable findStudentBySemester(String semester);\n\t@Transactional\n\t@Modifying\n\t@Query(\"UPDATE Student s set s.mailId = ?1 where s.id=?2\")\n\tint updateEmailid(String emailId, long id);\n\t@Transactional\n\t@Modifying\n\t@Query(\"UPDATE Student s set s.mobileNo = ?1 where s.id=?2\")\n\tint updateMobileNo(String mobileNo, long id);\n}\n<\/pre>\n\n\n\nChecking Rest API with Postman<\/h2>\n\n\n\n
open postman<\/a> and call APIs created in the controller. We called a few APIs as below.<\/p>\n\n\n\n