{"id":2337,"date":"2022-09-01T18:39:06","date_gmt":"2022-09-01T18:39:06","guid":{"rendered":"https:\/\/codeinsightacademy.com\/blog\/?p=2337"},"modified":"2026-02-06T15:17:06","modified_gmt":"2026-02-06T15:17:06","slug":"spring-boot","status":"publish","type":"post","link":"https:\/\/codeinsightacademy.com\/blog\/java\/spring-boot\/","title":{"rendered":"Spring Boot"},"content":{"rendered":"\n<p>CalcController.java<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package com.javatest.demo;\n\nimport org.springframework.web.bind.annotation.DeleteMapping;\nimport org.springframework.web.bind.annotation.GetMapping;\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.RequestMapping;\nimport org.springframework.web.bind.annotation.RequestParam;\nimport org.springframework.web.bind.annotation.RestController;\n\nclass MyCalc {\n    private int num1;\n    private int num2;\n\n    public int getNum1() {\n        return num1;\n    }\n    public void setNum1(int num1) {\n        this.num1 = num1;\n    }\n    public int getNum2() {\n        return num2;\n    }\n    public void setNum2(int num2) {\n        this.num2 = num2;\n    }\n    \n    @Override\n    public String toString() {\n        return \"MyCalc &#91;num1=\" + num1 + \", num2=\" + num2 + \"]\";\n    }\n}\n\n@RestController\npublic class CalcController {\n\n\n    @RequestMapping(\"test\")\n    public String test() {\n        return \"Testing....\";\n    }\n\n    \/** Read query params *\/\n    @RequestMapping(\"mycalc\")\n    @GetMapping\n    public String getMet(@RequestParam(\"num1\") int x, @RequestParam int y) {\n        return String.format(\"%s + %s = %s\", x, y, x+y);\n    }\n\n    \/** Read raw json data *\/\n    @PostMapping(\"mycalc\")\n    public String postMet(@RequestBody MyCalc obj) {\n        int x = obj.getNum1();\n        int y = obj.getNum2();\n\n        return String.format(\"%s - %s = %s\", x, y, x - y);\n    }\n\n    \/** Read form data *\/\n    @PutMapping(\"mycalc\")\n    public String putMet(\n        @RequestParam(\"num1\") int x,\n        @RequestParam(\"num2\") int y) {\n        return String.format(\"%s * %s = %s\", x, y, x * y);\n    }\n\n    \/** Read from raw json *\/\n    @DeleteMapping(\"mycalc\")\n    public String deleteMet(@RequestBody MyCalc obj) {\n        int x = obj.getNum1();\n        int y = obj.getNum2();\n        return String.format(\"%s \/ %s = %s\", x, y, x \/ y);\n    }\n\n}\n<\/code><\/pre>\n\n\n\n<p>src\/main\/resources\/application.properties<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>spring.datasource.url=jdbc:mysql:\/\/localhost:3306\/&lt;databasename&gt;\nspring.datasource.username=&lt;username&gt;\nspring.datasource.password=&lt;password&gt;\nspring.datasource.driverClassName=com.mysql.cj.jdbc.Driver<\/code><\/pre>\n\n\n\n<p>User.java (POJO\/DAO\/JPA)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package com.javatest.demo;\n\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=\"users\")\npublic class User {\n    @Id\n    @GeneratedValue(strategy = GenerationType.IDENTITY)\n    private Long id;\n    private String name;\n    private String age;\n    private String city;\n    private int quota;\n\n    public Long getId() {\n        return id;\n    }\n    public void setId(Long id) {\n        this.id = id;\n    }\n    public String getName() {\n        return name;\n    }\n    public void setName(String name) {\n        this.name = name;\n    }\n    public String getAge() {\n        return age;\n    }\n    public void setAge(String age) {\n        this.age = age;\n    }\n    public String getCity() {\n        return city;\n    }\n    public void setCity(String city) {\n        this.city = city;\n    }\n    public int getQuota() {\n        return quota;\n    }\n    public void setQuota(int quota) {\n        this.quota = quota;\n    }\n\n\n    \n    \/\/ getters and setters\n\n    \n}<\/code><\/pre>\n\n\n\n<p>UserController.java<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package com.javatest.demo;\n\n\nimport java.util.List;\n\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.RequestMapping;\nimport org.springframework.web.bind.annotation.RestController;\nimport org.springframework.data.jpa.repository.JpaRepository;\n\ninterface UserRepository extends JpaRepository&lt;User, Long&gt; {\n    \/\/ Custom queries can be defined here\n}\n\n@RestController\n@RequestMapping(\"users\")\npublic class UserController {\n    \n    private final UserRepository userRepository;\n    \n    public UserController(UserRepository userRepository) {\n        this.userRepository = userRepository;\n    }\n\n    @RequestMapping(\"\")\n    public String index() {\n        return \"I am from index\";\n    }\n\n    @RequestMapping(\"listing\")\n    public List&lt;User&gt; listing() {\n        \/\/ List&lt;User&gt; users = new ArrayList&lt;&gt;();\n        return userRepository.findAll();\n    }\n\n    @DeleteMapping(\"delete\/{id}\")\n    public String deleteUser(@PathVariable Long id) {\n        \/\/ Check if the user with the specified ID exists\n        if (userRepository.existsById(id)) {\n            userRepository.deleteById(id);\n            return String.format(\"User %s is deleted successfully\", id);\n        } else {\n            \/\/ Handle the case when the user does not exist (e.g., return an error response)\n            \/\/ You can throw an exception or return an appropriate response based on your application's requirements.\n        }\n        return \"\";\n    }\n\n    @PostMapping(\"create\")\n    public User createUser(@RequestBody User user) {\n        return userRepository.save(user);\n    }\n\n\n    @GetMapping(\"get-single\/{id}\")\n    public User getUserById(@PathVariable Long id) {\n        \/\/ Use the UserRepository to fetch the user by ID\n        return userRepository.findById(id).orElse(null);\n    }\n\n    @PutMapping(\"\/update\/{id}\")\n    public User updateUser(@PathVariable Long id, @RequestBody User updatedUser) {\n        \/\/ Check if the user with the specified ID exists\n        userRepository.findById(id).orElse(null);\n\n        \/\/ Set the ID of the updated user to the specified ID\n        updatedUser.setId(id);\n\n        \/\/ Save the updated user to the database\n        return userRepository.save(updatedUser);\n    }\n\n}\n<\/code><\/pre>\n\n\n\n<p>DemoApplication.java (Run this file to serve spring boot application)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package com.javatest.demo;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\n\n@SpringBootApplication\npublic class DemoApplication {\n\n\tpublic static void main(String&#91;] args) {\n\t\tSpringApplication.run(DemoApplication.class, args);\n\t}\n\n}\n<\/code><\/pre>\n\n\n\n<p>File Structure<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.\n\u251c\u2500\u2500 HELP.md\n\u251c\u2500\u2500 mvnw\n\u251c\u2500\u2500 mvnw.cmd\n\u251c\u2500\u2500 pom.xml\n\u251c\u2500\u2500 src\n\u2502   \u251c\u2500\u2500 main\n\u2502   \u2502   \u251c\u2500\u2500 java\n\u2502   \u2502   \u2502   \u2514\u2500\u2500 com\n\u2502   \u2502   \u2502       \u2514\u2500\u2500 javatest\n\u2502   \u2502   \u2502           \u2514\u2500\u2500 demo\n\u2502   \u2502   \u2502               \u251c\u2500\u2500 CalcController.java\n\u2502   \u2502   \u2502               \u251c\u2500\u2500 DemoApplication.java\n\u2502   \u2502   \u2502               \u251c\u2500\u2500 User.java\n\u2502   \u2502   \u2502               \u2514\u2500\u2500 UserController.java\n\u2502   \u2502   \u2514\u2500\u2500 resources\n\u2502   \u2502       \u251c\u2500\u2500 application.properties\n\u2502   \u2502       \u251c\u2500\u2500 static\n\u2502   \u2502       \u2514\u2500\u2500 templates\n\u2502   \u2514\u2500\u2500 test\n\u2502       \u2514\u2500\u2500 java\n\u2502           \u2514\u2500\u2500 com\n\u2502               \u2514\u2500\u2500 javatest\n\u2502                   \u2514\u2500\u2500 demo\n\u2502                       \u2514\u2500\u2500 DemoApplicationTests.java\n\u2514\u2500\u2500 target\n    \u251c\u2500\u2500 classes\n    \u2502   \u251c\u2500\u2500 application.properties\n    \u2502   \u2514\u2500\u2500 com\n    \u2502       \u2514\u2500\u2500 javatest\n    \u2502           \u2514\u2500\u2500 demo\n    \u2502               \u251c\u2500\u2500 CalcController.class\n    \u2502               \u251c\u2500\u2500 DemoApplication.class\n    \u2502               \u251c\u2500\u2500 MyCalc.class\n    \u2502               \u251c\u2500\u2500 User.class\n    \u2502               \u251c\u2500\u2500 UserController.class\n    \u2502               \u2514\u2500\u2500 UserRepository.class\n    \u2514\u2500\u2500 test-classes\n        \u2514\u2500\u2500 com\n            \u2514\u2500\u2500 javatest\n                \u2514\u2500\u2500 demo\n                    \u2514\u2500\u2500 DemoApplicationTests.class\n\n23 directories, 18 files<\/code><\/pre>\n\n\n\n<p>POC<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/codeinsightacademy.com\/blog\/http:\/\/codeinsightacademy.com\/blog\/wp-content\/uploads\/2023\/09\/image-6.png\"><img loading=\"lazy\" width=\"1112\" height=\"658\" src=\"https:\/\/codeinsightacademy.com\/blog\/http:\/\/codeinsightacademy.com\/blog\/wp-content\/uploads\/2023\/09\/image-6.png\" alt=\"\" class=\"wp-image-2633\"\/><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/codeinsightacademy.com\/blog\/http:\/\/codeinsightacademy.com\/blog\/wp-content\/uploads\/2023\/09\/image-2.png\"><img loading=\"lazy\" width=\"810\" height=\"358\" src=\"https:\/\/codeinsightacademy.com\/blog\/http:\/\/codeinsightacademy.com\/blog\/wp-content\/uploads\/2023\/09\/image-2.png\" alt=\"\" class=\"wp-image-2626\"\/><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/codeinsightacademy.com\/blog\/http:\/\/codeinsightacademy.com\/blog\/wp-content\/uploads\/2023\/09\/image-3.png\"><img loading=\"lazy\" width=\"811\" height=\"240\" src=\"https:\/\/codeinsightacademy.com\/blog\/http:\/\/codeinsightacademy.com\/blog\/wp-content\/uploads\/2023\/09\/image-3.png\" alt=\"\" class=\"wp-image-2627\"\/><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/codeinsightacademy.com\/blog\/http:\/\/codeinsightacademy.com\/blog\/wp-content\/uploads\/2023\/09\/image-4.png\"><img loading=\"lazy\" width=\"807\" height=\"257\" src=\"https:\/\/codeinsightacademy.com\/blog\/http:\/\/codeinsightacademy.com\/blog\/wp-content\/uploads\/2023\/09\/image-4.png\" alt=\"\" class=\"wp-image-2628\"\/><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/codeinsightacademy.com\/blog\/http:\/\/codeinsightacademy.com\/blog\/wp-content\/uploads\/2023\/09\/image-5.png\"><img loading=\"lazy\" width=\"809\" height=\"290\" src=\"https:\/\/codeinsightacademy.com\/blog\/http:\/\/codeinsightacademy.com\/blog\/wp-content\/uploads\/2023\/09\/image-5.png\" alt=\"\" class=\"wp-image-2629\"\/><\/a><\/figure>\n\n\n\n<p>VSCode Extesnsions<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/codeinsightacademy.com\/blog\/http:\/\/codeinsightacademy.com\/blog\/wp-content\/uploads\/2023\/09\/image.png\"><img loading=\"lazy\" width=\"956\" height=\"472\" src=\"https:\/\/codeinsightacademy.com\/blog\/http:\/\/codeinsightacademy.com\/blog\/wp-content\/uploads\/2023\/09\/image.png\" alt=\"\" class=\"wp-image-2620\"\/><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/codeinsightacademy.com\/blog\/http:\/\/codeinsightacademy.com\/blog\/wp-content\/uploads\/2023\/09\/image-1.png\"><img loading=\"lazy\" width=\"886\" height=\"475\" src=\"https:\/\/codeinsightacademy.com\/blog\/http:\/\/codeinsightacademy.com\/blog\/wp-content\/uploads\/2023\/09\/image-1.png\" alt=\"\" class=\"wp-image-2621\"\/><\/a><\/figure>\n\n\n\n<h2>Spring Boot Web + JPA + MySQL<\/h2>\n\n\n\n<p>Got it \u2705<br>Let\u2019s build this from <strong>scratch<\/strong>, step by step, including MySQL dependency so you\u2019re future-ready but you can still just run Hello World without DB config.<\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h1>\ud83d\ude80 Spring Boot Hello World (with future MySQL support) in VS Code<\/h1>\n\n\n\n<h2>1. Prerequisites<\/h2>\n\n\n\n<p>Check you have these installed:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>java -version      # Java 17 or 21 recommended\nmvn -v             # Maven installed\n<\/code><\/pre>\n\n\n\n<p>VS Code Extensions:<\/p>\n\n\n\n<ul><li><strong>Extension Pack for Java<\/strong><\/li><li><strong>Spring Boot Extension Pack<\/strong> (optional but helpful)<\/li><\/ul>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h2>2. Generate Spring Boot Project<\/h2>\n\n\n\n<h3>Option A (VS Code)<\/h3>\n\n\n\n<ol><li>Press <code>Ctrl+Shift+P<\/code> \u2192 search <code>Spring Initializr: Create a Maven Project<\/code>.<\/li><li>Select:<ul><li><strong>Spring Boot version<\/strong>: 3.x (latest)<\/li><li><strong>Project<\/strong>: Maven<\/li><li><strong>Language<\/strong>: Java<\/li><li><strong>Group Id<\/strong>: <code>com.example<\/code><\/li><li><strong>Artifact Id<\/strong>: <code>hello<\/code><\/li><li><strong>Dependencies<\/strong>: <code>Spring Web<\/code>, <code>Spring Data JPA<\/code>, <code>MySQL Driver<\/code><\/li><\/ul><\/li><li>It will create and open the project in VS Code.<\/li><\/ol>\n\n\n\n<h3>Option B (Browser)<\/h3>\n\n\n\n<p>Go to \ud83d\udc49 <a href=\"https:\/\/start.spring.io\/\">https:\/\/start.spring.io<\/a><br>Choose:<\/p>\n\n\n\n<ul><li><strong>Maven Project<\/strong>, Java, Spring Boot <code>3.x<\/code><\/li><li>Group: <code>com.example<\/code><\/li><li>Artifact: <code>hello<\/code><\/li><li>Dependencies: <code>Spring Web<\/code>, <code>Spring Data JPA<\/code>, <code>MySQL Driver<\/code><br>Download \u2192 unzip \u2192 open folder in VS Code.<\/li><\/ul>\n\n\n\n<h2>src\/main\/resources\/application.properties<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>spring.datasource.url=jdbc:mysql:\/\/localhost:3306\/your_database\nspring.datasource.username=root\nspring.datasource.password=your_password\n\nspring.jpa.hibernate.ddl-auto=update\nspring.jpa.show-sql=true\nspring.jpa.database-platform=org.hibernate.dialect.MySQLDialect<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h2>3. Project Structure<\/h2>\n\n\n\n<p>You\u2019ll see:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>hello\/\n \u251c\u2500 src\/main\/java\/com\/example\/hello\/\n \u2502   \u251c\u2500 HelloApplication.java\n \u2502   \u2514\u2500 controller\/HelloController.java   (we\u2019ll create)\n \u251c\u2500 src\/main\/resources\/\n \u2502   \u251c\u2500 application.properties\n \u251c\u2500 pom.xml\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h2>4. Minimal <code>pom.xml<\/code><\/h2>\n\n\n\n<p>Your <code>pom.xml<\/code> should contain (important part only):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;dependencies&gt;\n    &lt;!-- Spring Web for REST APIs --&gt;\n    &lt;dependency&gt;\n        &lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\n        &lt;artifactId&gt;spring-boot-starter-web&lt;\/artifactId&gt;\n    &lt;\/dependency&gt;\n\n    &lt;!-- MySQL JDBC Driver --&gt;\n    &lt;dependency&gt;\n        &lt;groupId&gt;mysql&lt;\/groupId&gt;\n        &lt;artifactId&gt;mysql-connector-j&lt;\/artifactId&gt;\n        &lt;scope&gt;runtime&lt;\/scope&gt;\n    &lt;\/dependency&gt;\n\n    &lt;!-- JPA (for DB support in future) --&gt;\n    &lt;dependency&gt;\n        &lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\n        &lt;artifactId&gt;spring-boot-starter-data-jpa&lt;\/artifactId&gt;\n    &lt;\/dependency&gt;\n\n    &lt;!-- Testing --&gt;\n    &lt;dependency&gt;\n        &lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\n        &lt;artifactId&gt;spring-boot-starter-test&lt;\/artifactId&gt;\n        &lt;scope&gt;test&lt;\/scope&gt;\n    &lt;\/dependency&gt;\n&lt;\/dependencies&gt;\n<\/code><\/pre>\n\n\n\n<p>\u26a1 Even if MySQL is not configured, the app will still run fine.<\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h2>5. Application Entry Point<\/h2>\n\n\n\n<p>Generated file \u2192 <code>HelloApplication.java<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package com.example.hello;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\n\n@SpringBootApplication\npublic class HelloApplication {\n\n    public static void main(String&#91;] args) {\n        SpringApplication.run(HelloApplication.class, args);\n    }\n}\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h2>6. Create Controller<\/h2>\n\n\n\n<p>Create folder <code>controller<\/code> under <code>com.example.hello<\/code>.<br>File: <code>HelloController.java<\/code><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package com.example.hello.controller;\n\nimport org.springframework.web.bind.annotation.GetMapping;\nimport org.springframework.web.bind.annotation.RestController;\n\n@RestController\npublic class HelloController {\n\n    @GetMapping(\"\/hello\")\n    public String hello() {\n        return \"Hello World\";\n    }\n}\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h2>7. Run the Application<\/h2>\n\n\n\n<p>In VS Code terminal:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mvn spring-boot:run\n<\/code><\/pre>\n\n\n\n<p>Or run <code>HelloApplication.java<\/code> directly via <strong>Run \u2192 Start Debugging<\/strong>.<\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h2>8. Test in Browser \/ Curl<\/h2>\n\n\n\n<p>Visit:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>http:&#47;&#47;localhost:8080\/hello\n<\/code><\/pre>\n\n\n\n<p>Output:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Hello World\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h2>9. (Future) MySQL Connection Setup<\/h2>\n\n\n\n<p>When you\u2019re ready to use MySQL, edit <code>src\/main\/resources\/application.properties<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>spring.datasource.url=jdbc:mysql:\/\/localhost:3306\/mydb\nspring.datasource.username=root\nspring.datasource.password=secret\n\nspring.jpa.hibernate.ddl-auto=update\nspring.jpa.show-sql=true\nspring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect\n<\/code><\/pre>\n\n\n\n<p>Then you can create <code>Entity<\/code> + <code>Repository<\/code> classes for DB operations.<\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h2>10. Employee POJO \/ Repo \/ Controller<\/h2>\n\n\n\n<p>src\/main\/java\/com\/example\/demo\/Employee.java<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package com.example.demo;\n\nimport jakarta.persistence.*;\n\n@Entity\n@Table(name = \"employee\")\npublic class Employee {\n\n    @Id\n    @GeneratedValue(strategy = GenerationType.IDENTITY)\n    private Long id;\n\n    private String name;\n    private String department;\n    private Double salary;\n\n    \/\/ getters &amp; setters\n    public Long getId() { return id; }\n    public void setId(Long id) { this.id = id; }\n\n    public String getName() { return name; }\n    public void setName(String name) { this.name = name; }\n\n    public String getDepartment() { return department; }\n    public void setDepartment(String department) { this.department = department; }\n\n    public Double getSalary() { return salary; }\n    public void setSalary(Double salary) { this.salary = salary; }\n    \n}\n\n\n<\/code><\/pre>\n\n\n\n<p>src\/main\/java\/com\/example\/demo\/EmployeeRepository.java<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package com.example.demo;\n\nimport org.springframework.data.jpa.repository.JpaRepository;\n\npublic interface EmployeeRepository extends JpaRepository&lt;Employee, Long> {\n}\n<\/code><\/pre>\n\n\n\n<p>src\/main\/java\/com\/example\/demo\/EmployeeController.java<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package com.example.demo;\n\nimport org.springframework.web.bind.annotation.*;\n\nimport java.util.List;\n\n@CrossOrigin(origins = \"*\")\n@RestController\n@RequestMapping(\"\/employees\")\npublic class EmployeeController {\n\n    private final EmployeeRepository employeeRepository;\n\n    public EmployeeController(EmployeeRepository employeeRepository) {\n        this.employeeRepository = employeeRepository;\n    }\n\n    \/\/ \u2705 CREATE (POST)\n    @PostMapping\n    public Employee createEmployee(@RequestBody Employee employee) {\n        return employeeRepository.save(employee);\n    }\n\n    \/\/ \u2705 READ ALL (GET)\n    @GetMapping\n    public List&lt;Employee> getAllEmployees() {\n        return employeeRepository.findAll();\n    }\n\n    \/\/ \u2705 READ BY ID (GET)\n    @GetMapping(\"\/{id}\")\n    public Employee getEmployeeById(@PathVariable Long id) {\n        return employeeRepository.findById(id).orElse(null);\n    }\n\n    \/\/ \u2705 UPDATE (PUT)\n    @PutMapping(\"\/{id}\")\n    public Employee updateEmployee(\n            @PathVariable Long id,\n            @RequestBody Employee updatedEmployee) {\n\n        Employee existing = employeeRepository.findById(id).orElse(null);\n\n        if (existing == null) {\n            return null;\n        }\n\n        existing.setName(updatedEmployee.getName());\n        existing.setDepartment(updatedEmployee.getDepartment());\n        existing.setSalary(updatedEmployee.getSalary());\n\n        return employeeRepository.save(existing);\n    }\n\n    \/\/ \u2705 DELETE (DELETE)\n    @DeleteMapping(\"\/{id}\")\n    public String deleteEmployee(@PathVariable Long id) {\n\n        if (!employeeRepository.existsById(id)) {\n            return \"Employee not found\";\n        }\n\n        employeeRepository.deleteById(id);\n        return \"Employee deleted successfully\";\n    }\n}\n\n<\/code><\/pre>\n\n\n\n<p>frontend\/index.html<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;!DOCTYPE html>\n&lt;html>\n&lt;head>\n    &lt;title>Employee CRUD&lt;\/title>\n    &lt;style>\n        table {\n            border-collapse: collapse;\n            width: 70%;\n            margin-top: 20px;\n        }\n        th, td {\n            border: 1px solid #333;\n            padding: 8px;\n        }\n        th {\n            background-color: #f2f2f2;\n        }\n        button {\n            margin-right: 5px;\n        }\n        input {\n            margin: 5px;\n        }\n    &lt;\/style>\n&lt;\/head>\n&lt;body>\n\n&lt;h2>Employee Management&lt;\/h2>\n\n&lt;!-- ADD \/ EDIT FORM -->\n&lt;input type=\"hidden\" id=\"empId\">\n\n&lt;input type=\"text\" id=\"name\" placeholder=\"Name\">\n&lt;input type=\"text\" id=\"department\" placeholder=\"Department\">\n&lt;input type=\"number\" id=\"salary\" placeholder=\"Salary\">\n\n&lt;button onclick=\"saveEmployee()\">Add \/ Update&lt;\/button>\n\n&lt;!-- TABLE -->\n&lt;table>\n    &lt;thead>\n        &lt;tr>\n            &lt;th>ID&lt;\/th>\n            &lt;th>Name&lt;\/th>\n            &lt;th>Department&lt;\/th>\n            &lt;th>Salary&lt;\/th>\n            &lt;th>Action&lt;\/th>\n        &lt;\/tr>\n    &lt;\/thead>\n    &lt;tbody id=\"employeeTable\">&lt;\/tbody>\n&lt;\/table>\n\n&lt;script>\n    const apiUrl = \"http:\/\/localhost:8080\/employees\";\n\n    function loadEmployees() {\n        fetch(apiUrl)\n            .then(res => res.json())\n            .then(data => {\n                const table = document.getElementById(\"employeeTable\");\n                table.innerHTML = \"\";\n\n                data.forEach(emp => {\n                    table.innerHTML += `\n                        &lt;tr>\n                            &lt;td>${emp.id}&lt;\/td>\n                            &lt;td>${emp.name}&lt;\/td>\n                            &lt;td>${emp.department}&lt;\/td>\n                            &lt;td>${emp.salary}&lt;\/td>\n                            &lt;td>\n                                &lt;button onclick=\"editEmployee(${emp.id}, '${emp.name}', '${emp.department}', ${emp.salary})\">Edit&lt;\/button>\n                                &lt;button onclick=\"deleteEmployee(${emp.id})\">Delete&lt;\/button>\n                            &lt;\/td>\n                        &lt;\/tr>\n                    `;\n                });\n            });\n    }\n\n    function saveEmployee() {\n        const id = document.getElementById(\"empId\").value;\n        const employee = {\n            name: document.getElementById(\"name\").value,\n            department: document.getElementById(\"department\").value,\n            salary: document.getElementById(\"salary\").value\n        };\n\n        if (id) {\n            \/\/ UPDATE\n            fetch(`${apiUrl}\/${id}`, {\n                method: \"PUT\",\n                headers: { \"Content-Type\": \"application\/json\" },\n                body: JSON.stringify(employee)\n            }).then(() => resetForm());\n        } else {\n            \/\/ CREATE\n            fetch(apiUrl, {\n                method: \"POST\",\n                headers: { \"Content-Type\": \"application\/json\" },\n                body: JSON.stringify(employee)\n            }).then(() => resetForm());\n        }\n    }\n\n    function editEmployee(id, name, department, salary) {\n        document.getElementById(\"empId\").value = id;\n        document.getElementById(\"name\").value = name;\n        document.getElementById(\"department\").value = department;\n        document.getElementById(\"salary\").value = salary;\n    }\n\n    function deleteEmployee(id) {\n        if (confirm(\"Are you sure?\")) {\n            fetch(`${apiUrl}\/${id}`, { method: \"DELETE\" })\n                .then(() => loadEmployees());\n        }\n    }\n\n    function resetForm() {\n        document.getElementById(\"empId\").value = \"\";\n        document.getElementById(\"name\").value = \"\";\n        document.getElementById(\"department\").value = \"\";\n        document.getElementById(\"salary\").value = \"\";\n        loadEmployees();\n    }\n\n    \/\/ Load on page load\n    loadEmployees();\n&lt;\/script>\n\n&lt;\/body>\n&lt;\/html>\n<\/code><\/pre>\n\n\n\n<p>\u2705 That\u2019s it \u2014 you now have:<\/p>\n\n\n\n<ul><li>A working <strong>Hello World REST API<\/strong> (<code>\/hello<\/code>)<\/li><li>MySQL support already included for future use<\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>CalcController.java src\/main\/resources\/application.properties User.java (POJO\/DAO\/JPA) UserController.java DemoApplication.java (Run this file to serve spring boot application) File Structure POC VSCode Extesnsions Spring Boot Web + JPA + MySQL Got it \u2705Let\u2019s build this from scratch, step by step, including MySQL dependency so you\u2019re future-ready but you can still just run Hello World without DB config. \ud83d\ude80 Spring [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[3],"tags":[],"_links":{"self":[{"href":"https:\/\/codeinsightacademy.com\/blog\/wp-json\/wp\/v2\/posts\/2337"}],"collection":[{"href":"https:\/\/codeinsightacademy.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/codeinsightacademy.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/codeinsightacademy.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/codeinsightacademy.com\/blog\/wp-json\/wp\/v2\/comments?post=2337"}],"version-history":[{"count":17,"href":"https:\/\/codeinsightacademy.com\/blog\/wp-json\/wp\/v2\/posts\/2337\/revisions"}],"predecessor-version":[{"id":2960,"href":"https:\/\/codeinsightacademy.com\/blog\/wp-json\/wp\/v2\/posts\/2337\/revisions\/2960"}],"wp:attachment":[{"href":"https:\/\/codeinsightacademy.com\/blog\/wp-json\/wp\/v2\/media?parent=2337"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/codeinsightacademy.com\/blog\/wp-json\/wp\/v2\/categories?post=2337"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/codeinsightacademy.com\/blog\/wp-json\/wp\/v2\/tags?post=2337"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}