pom.xml:

    <dependencies>
<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-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

The process can be divide into 6 steps:

1. Update db configs in application.properties

2. Create Employee entity

3. Create DAO interface

4. Create DAO implementation

5. Create REST service to use DAO

6. Create REST controller to use DAO

1. application.properties;

spring.datasource.url=jdbc:mysql://localhost:3306/employee_directory?useSSL=false
spring.datasource.username=root
spring.datasource.password=admin

2. Create Employee entity: Entity is defination of the database table

entity/Employee:

package com.luv2code.springboot.cruddemo.entity;

import javax.persistence.*;

@Entity
@Table(name = "employee")
public class Employee {
// define fields
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="id")
private int id; @Column(name="first_name")
private String firstName; @Column(name="last_name")
private String lastName; @Column(name="email")
private String email; public Employee () { } public Employee(String firstName, String lastName, String email) {
this.firstName = firstName;
this.lastName = lastName;
this.email = email;
} // define getter/setter public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public java.lang.String getFirstName() {
return firstName;
} public void setFirstName(java.lang.String firstName) {
this.firstName = firstName;
} public java.lang.String getLastName() {
return lastName;
} public void setLastName(java.lang.String lastName) {
this.lastName = lastName;
} public java.lang.String getEmail() {
return email;
} public void setEmail(java.lang.String email) {
this.email = email;
} // define tostring
@Override
public String toString() {
return "Employee{" +
"id=" + id +
", firstName=" + firstName +
", lastName=" + lastName +
", email=" + email +
'}';
}
}

3. DAO interface: Opreations of the database, which will be implementated by the service:

dao/EmployeeDAO:

package com.luv2code.springboot.cruddemo.dao;

import com.luv2code.springboot.cruddemo.entity.Employee;
import java.util.List; public interface EmployeeDAO {
public List<Employee> findAll(); public Employee findById (int theId); public void save(Employee theEmployee); public void deleteById(int theId);
}

4. DAO implementation:

dao/EmployeeDAOHibernateImpl: Here is the implemataion which write query to database

package com.luv2code.springboot.cruddemo.dao;

import java.util.List;
import com.luv2code.springboot.cruddemo.entity.Employee;
import org.hibernate.Session;
import org.hibernate.query.Query;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository; import javax.persistence.EntityManager;
import javax.transaction.Transactional; @Repository
public class EmployeeDAOHibernateImpl implements EmployeeDAO{ // define field for entitymanager
private EntityManager entityManager; // setup constructor injection
@Autowired
public EmployeeDAOHibernateImpl(EntityManager theEntityManager) {
entityManager = theEntityManager;
} @Override
public List<Employee> findAll() {
// get the current hibernate session
Session currentSession = entityManager.unwrap(Session.class); // create a query
Query<Employee> theQuery =
currentSession.createQuery("from Employee", Employee.class); // execute query and get result list
List<Employee> employees = theQuery.getResultList(); // return the results
return employees;
} @Override
public Employee findById(int theId) {
Session crtSession = entityManager.unwrap(Session.class);
Employee theEmployee = crtSession.get(Employee.class, theId); return theEmployee;
} @Override
public void save(Employee theEmployee) {
Session crtSession = entityManager.unwrap(Session.class);
crtSession.saveOrUpdate(theEmployee);
} @Override
public void deleteById(int theId) {
Session crtSession = entityManager.unwrap(Session.class);
Query theQuery =
crtSession.createQuery("delete from Employee where id=:employeeId");
theQuery.setParameter("employeeId", theId);
theQuery.executeUpdate();
}
}

5. Create a service to use DAO:

service/EmployeeService:

package com.luv2code.springboot.cruddemo.service;

import com.luv2code.springboot.cruddemo.entity.Employee;

public interface EmployeeService {

    public List<Employee> findAll();

    public Employee findById(int theId);

    public void save (Employee theEmployee);

    public void deleteById(int theId);
}

service/EmployeeServiceImpl:

package com.luv2code.springboot.cruddemo.service;

import com.luv2code.springboot.cruddemo.dao.EmployeeDAO;
import com.luv2code.springboot.cruddemo.entity.Employee;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional; public class EmployeeServiceImpl implements EmployeeService{ private EmployeeDAO employeeDAO; @Autowired
public EmployeeServiceImpl (EmployeeDAO theEmployeeDAO) {
employeeDAO = theEmployeeDAO;
} @Override
@Transactional
public List<Employee> findAll() {
return employeeDAO.findAll();
} @Override
@Transactional
public Employee findById(int theId) {
return employeeDAO.findById(theId);
} @Override
@Transactional
public void save(Employee theEmployee) {
employeeDAO.save(theEmployee);
} @Override
@Transactional
public void deleteById(int theId) {
employeeDAO.deleteById(theId);
}
}

6. Controller:

rest/EmployeeRestController:

package com.luv2code.springboot.cruddemo.rest;

import com.luv2code.springboot.cruddemo.entity.Employee;
import com.luv2code.springboot.cruddemo.service.EmployeeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; @RestController
@RequestMapping("/api")
public class EmployeeRestController { private EmployeeService employeeService; @Autowired
public EmployeeRestController (EmployeeService theEmployeeService) {
employeeService = theEmployeeService;
} // export "/employees" and return list of employees
@GetMapping("/employees/{employeeId}")
public List<Employee> findAll () {
return employeeService.findAll();
} // add mapping for GET /employee/{employeeId}
public Employee getEmployee (@PathVariable int employeeId) {
Employee theEmployee = employeeService.findById(employeeId); if (theEmployee == null) {
throw new RuntimeException("Employee id not found - " + employeeId);
} return theEmployee;
} // add mapping for POST /employees - and new employee
@PostMapping("/employees")
public Employee addEmployee (@RequestBody Employee theEmployee) {
// also just in case they pass an id in JSON ... set id to 0
// this is to force a save of new item ... instead of update theEmployee.setId(0); // if this is update operation, it will update the id
employeeService.save(theEmployee); return theEmployee;
} // add mapping for PUT /employees - update existing employee
@PutMapping("/employees")
public Employee updateEmployee (@RequestBody Employee theEmployee) {
employeeService.save(theEmployee); return theEmployee;
} // delete mapping for DELETE /employees/{employeeId} - delete an existing employee
@DeleteMapping("/employees/{employeeId}")
public String deleteEmployee (@PathVariable int employeeId) {
Employee tempEmployee = employeeService.findById(employeeId);
if (tempEmployee == null) {
throw new RuntimeException("Employee id not found - " + employeeId);
} employeeService.deleteById(employeeId); return "Deleted employee id - " + employeeId;
}
}

最新文章

  1. AngularJS 第三天----作用域
  2. JavaScript资源大全中文版(Awesome最新版)
  3. c++/java/python priority_que实现最大堆和最小堆
  4. 20145301&amp;20145321&amp;20145335实验二
  5. javaSE第十天
  6. 【转载】Oracle实例和Oracle数据库(Oracle体系结构)
  7. iOS:核心动画之基本动画CABasicAnimation
  8. macos ssh host配置及免密登陆
  9. java org.apache.struts.taglib.html.BEAN 没有找到
  10. Linux项目一
  11. 利用golang语法检查对象是否实现了接口
  12. 查询死锁和处理死锁(SqlServer)
  13. PLC之六部十层电梯整体框架
  14. 20155324 2016-2017-2 《Java程序设计》第十周学习总结
  15. Hdu-2016解题报告
  16. java jdk 打开出错 Failed to load the JNI shared library
  17. 修复vs2012出现 “无法找到包源”的错误
  18. 四种losses
  19. BZOJ 2142 礼物 组合数学 CRT 中国剩余定理
  20. 《C++ Primer Plus》第9章 内存模型和名称空间 学习笔记

热门文章

  1. kindeditor的配置jsp版
  2. taglib block
  3. 复习最短路 spfa+dijstra堆优化
  4. java8【一、lambda表达式语法】
  5. uni-app使用Canvas绘图
  6. 你真的了解new function(){} 和 function(){}()吗?
  7. JS基础_对象的方法
  8. Centos7.7安装expect命令工具
  9. 17.SpringMVC核心技术-拦截器
  10. PHP中RabbitMQ之amqp扩展实现(四)