Spring Boot MVC Application
We can do multiple things in Spring Boot, here we are going to make CRUD application using Spring.
To start with this project we need to have Spring Boot in our system. We can use spring io (https://start.spring.io/) or directly use Spring Boot to create a project.
Tools used:
- Spring Boot
- Maven Dependencies
- Oracle / MySql as Database
- Bootstrap as frontend
We are going to use the MVC approach to make this CRUD Application.
Project Structure as below:
Now create a new project in Spring Boot.
Step 1: Create a Spring Strater Project.
Step 2: Add Project Name, Artifact, Version. Here you can change the version and packing of the project.
Step 3: Add Maven dependencies - Select Spring Web
Click on the finish.
It will take some time to update the project and set up a blank project for you.
Now we come to our project part to add some maven dependencies in pom.xml file.
If you need the MySql database in your project then add below dependency in pom.xml.
The main point of the project is you need to create each and every file as same as shown in Project Structure.
In Spring Boot, our project starts from SpringMvcProjectApplication.java this file, from where initialization takes place.
Open below file:
SpringMVCProject/src/main/java/com/slashcode/employee/SpringMvcProjectApplication.java
As you can see the main function defined here.
Now come to our model where we need to define the Employee POJO file.
In Employee Pojo we will have its properties, their respective getters and setters, and constructors as below.
You can add a toString() method as per your requirement.
SpringMVCProject/src/main/java/com/slashcode/employee/model/Employee.java
After Employee Pojo, come to our DAO layer where we are going to interact with Database.
You just need to add @Repository and extends JpaRepository for DAO interface, rest all thing will be taken care internally.
Like all database related queries required for CRUD operations.
SpringMVCProject/src/main/java/com/slashcode/employee/dao/IEmployeeDAO.java
So after the DAO layer, we will come to the service layer where all business-related logic takes place.
In the service layer, we will have the Employe Service interface and its implementation as below.
SpringMVCProject/src/main/java/com/slashcode/employee/service/IEmployeeService.java
SpringMVCProject/src/main/java/com/slashcode/employee/service/EmployeeServiceImpl.java
In the above EmployeeServiceImpl.java file, we have called added IEmployeeDAO using @Autowired annotation so that we can call its functions.
You can see we have added multiple functions that we not even defined the IEmployeeDAO interface. These functions are coming from JpaRepository Interface which we have extended in that.
Now come to the controller part, where all routing going to perform.
On which route which function will get a call, we are going to define them here.
SpringMVCProject/src/main/java/com/slashcode/employee/controller/EmployeeController.java
UI Part we will see in the next part. ( Spring Boot MVC Application - UI )
Youtube video link for your reference.
To start with this project we need to have Spring Boot in our system. We can use spring io (https://start.spring.io/) or directly use Spring Boot to create a project.
Tools used:
- Spring Boot
- Maven Dependencies
- Oracle / MySql as Database
- Bootstrap as frontend
We are going to use the MVC approach to make this CRUD Application.
Project Structure as below:
Now create a new project in Spring Boot.
Step 1: Create a Spring Strater Project.
Step 2: Add Project Name, Artifact, Version. Here you can change the version and packing of the project.
Step 3: Add Maven dependencies - Select Spring Web
Click on the finish.
It will take some time to update the project and set up a blank project for you.
Now we come to our project part to add some maven dependencies in pom.xml file.
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.5.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.example</groupId> <artifactId>SpringMVCProject</artifactId> <version>0.0.1-SNAPSHOT</version> <name>SpringMVCProject</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> <maven-jar-plugin.version>3.1.1</maven-jar-plugin.version> </properties> <dependencies> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> <scope>provided</scope> </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-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project> |
If you need the MySql database in your project then add below dependency in pom.xml.
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> |
The main point of the project is you need to create each and every file as same as shown in Project Structure.
In Spring Boot, our project starts from SpringMvcProjectApplication.java this file, from where initialization takes place.
Open below file:
SpringMVCProject/src/main/java/com/slashcode/employee/SpringMvcProjectApplication.java
package com.slashcode.employee; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class SpringMvcProjectApplication { public static void main(String[] args) { SpringApplication.run(SpringMvcProjectApplication.class, args); } } |
As you can see the main function defined here.
Now come to our model where we need to define the Employee POJO file.
In Employee Pojo we will have its properties, their respective getters and setters, and constructors as below.
You can add a toString() method as per your requirement.
SpringMVCProject/src/main/java/com/slashcode/employee/model/Employee.java
package com.slashcode.employee.model; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; @Entity public class Employee { @Id @GeneratedValue private int empId; private String empName; private String deptName; public Employee() {} public Employee(int empId, String empName, String deptName) { super(); this.empId = empId; this.empName = empName; this.deptName = deptName; } public int getEmpId() { return empId; } public void setEmpId(int empId) { this.empId = empId; } public String getEmpName() { return empName; } public void setEmpName(String empName) { this.empName = empName; } public String getDeptName() { return deptName; } public void setDeptName(String deptName) { this.deptName = deptName; } @Override public String toString() { return "Employee [empId=" + empId + ", empName=" + empName + ", deptName=" + deptName + "]"; } } |
After Employee Pojo, come to our DAO layer where we are going to interact with Database.
You just need to add @Repository and extends JpaRepository for DAO interface, rest all thing will be taken care internally.
Like all database related queries required for CRUD operations.
SpringMVCProject/src/main/java/com/slashcode/employee/dao/IEmployeeDAO.java
package com.slashcode.employee.dao; import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; import com.slashcode.employee.model.Employee; @Repository public interface IEmployeeDAO extends JpaRepository<Employee, Integer> { List<Employee> findByDeptName(String deptName); } |
So after the DAO layer, we will come to the service layer where all business-related logic takes place.
In the service layer, we will have the Employe Service interface and its implementation as below.
SpringMVCProject/src/main/java/com/slashcode/employee/service/IEmployeeService.java
package com.slashcode.employee.service; import java.util.List; import com.slashcode.employee.model.Employee; public interface IEmployeeService { List<Employee> getAllEmployee(); Employee getEmployeeById(int empId); void addEmployee(Employee employee); void updateEmployee(Employee employee, int empId); void deleteEmployee(int empId); List<Employee> getEmployeeByDept(String deptName); } |
SpringMVCProject/src/main/java/com/slashcode/employee/service/EmployeeServiceImpl.java
package com.slashcode.employee.service; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.slashcode.employee.dao.IEmployeeDAO; import com.slashcode.employee.model.Employee; @Service public class EmployeeServiceImpl implements IEmployeeService { @Autowired private IEmployeeDAO daoRef; @Override public List<Employee> getAllEmployee() { return daoRef.findAll(); } @Override public Employee getEmployeeById(int empId) { return daoRef.getOne(empId); } @Override public void addEmployee(Employee employee) { } @Override public void updateEmployee(Employee employee, int empId) { daoRef.save(employee); } @Override public void deleteEmployee(int empId) { daoRef.deleteById(empId); } @Override public List<Employee> getEmployeeByDept(String deptName) { return daoRef.findByDeptName(deptName); } } |
In the above EmployeeServiceImpl.java file, we have called added IEmployeeDAO using @Autowired annotation so that we can call its functions.
You can see we have added multiple functions that we not even defined the IEmployeeDAO interface. These functions are coming from JpaRepository Interface which we have extended in that.
Now come to the controller part, where all routing going to perform.
On which route which function will get a call, we are going to define them here.
SpringMVCProject/src/main/java/com/slashcode/employee/controller/EmployeeController.java
package com.slashcode.employee.controller; import java.util.ArrayList; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import com.slashcode.employee.model.Employee; import com.slashcode.employee.service.IEmployeeService; @Controller public class EmployeeController { @Autowired IEmployeeService serviceRef; @RequestMapping("/") public String getHomePage(Model model) { model.addAttribute("successMsg", "Welcome to My Youtube Channel /Code"); return "Homepage"; } @RequestMapping("/addNewEmployee") public String addNewEmployeePage(Model model) { model.addAttribute("employee",new Employee()); return "NewEmployee"; } @RequestMapping("/addEmployeeDetails") public String addEmployeeDetails(@ModelAttribute("employee") Employee employee, BindingResult result, Model model){ if(result.hasErrors()){ return "NewEmployee"; } else{ serviceRef.addEmployee(employee); model.addAttribute("successMsg", "Data Inserted Successfully"); return "Homepage"; } } @RequestMapping("/getAllEmployee") public String getEmployeeList(Model model) { List<Employee> empList = new ArrayList<Employee>(); empList= serviceRef.getAllEmployee(); model.addAttribute("employeeList",empList); return "employeeview"; } @RequestMapping(value="/employee", method=RequestMethod.GET) public String Employee(Model model, @RequestParam("empId") int empId) { Employee emp = serviceRef.getEmployeeById(empId); model.addAttribute("employeeData",emp); return "EmployeeOperation"; } @RequestMapping("/updateEmployee") public String updateEmployee(Model model, @RequestParam("empId") int empId) { Employee emp = serviceRef.getEmployeeById(empId); model.addAttribute("employeeDetails", emp); return "updateEmployeePage"; } @RequestMapping("/updateEmployeeDetails") public String updateEmployeeDetail(@ModelAttribute("employee") Employee employee, BindingResult result, Model model){ if(result.hasErrors()){ return "NewEmployee"; } else{ serviceRef.updateEmployee(employee, employee.getEmpId()); model.addAttribute("successMsg", "Employee Updated Successfully"); return "Homepage"; } } @RequestMapping("/deleteEmployee") public String deleteEmployee(Model model, @RequestParam("empId") int empId) { serviceRef.deleteEmployee(empId); model.addAttribute("successMsg", "Employee Deleted Successfully"); return "Homepage"; } } |
UI Part we will see in the next part. ( Spring Boot MVC Application - UI )
Youtube video link for your reference.
Comments
Post a Comment