diff --git a/mapstruct/pom.xml b/mapstruct/pom.xml
new file mode 100644
index 0000000000..8a28ae9511
--- /dev/null
+++ b/mapstruct/pom.xml
@@ -0,0 +1,49 @@
+
+
+ 4.0.0
+ mapstruct
+ mapstruct
+ com.baeldung
+ 1.0
+ jar
+
+
+ 1.0.0.Final
+
+
+
+ org.mapstruct
+ mapstruct-jdk8
+ ${org.mapstruct.version}
+
+
+ junit
+ junit
+ 4.12
+ test
+
+
+
+ mapstruct
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.5.1
+
+ 1.8
+ 1.8
+
+
+ org.mapstruct
+ mapstruct-processor
+ ${org.mapstruct.version}
+
+
+
+
+
+
+
diff --git a/mapstruct/src/main/java/org/baeldung/dto/EmployeeDTO.java b/mapstruct/src/main/java/org/baeldung/dto/EmployeeDTO.java
new file mode 100644
index 0000000000..67b9ffc024
--- /dev/null
+++ b/mapstruct/src/main/java/org/baeldung/dto/EmployeeDTO.java
@@ -0,0 +1,42 @@
+package org.baeldung.dto;
+
+public class EmployeeDTO {
+
+ private int employeeId;
+ private String employeeName;
+ private int divisionId;
+ private String divisionName;
+
+ public int getEmployeeId() {
+ return employeeId;
+ }
+
+ public void setEmployeeId(int employeeId) {
+ this.employeeId = employeeId;
+ }
+
+ public String getEmployeeName() {
+ return employeeName;
+ }
+
+ public void setEmployeeName(String employeeName) {
+ this.employeeName = employeeName;
+ }
+
+ public int getDivisionId() {
+ return divisionId;
+ }
+
+ public void setDivisionId(int divisionId) {
+ this.divisionId = divisionId;
+ }
+
+ public String getDivisionName() {
+ return divisionName;
+ }
+
+ public void setDivisionName(String divisionName) {
+ this.divisionName = divisionName;
+ }
+
+}
diff --git a/mapstruct/src/main/java/org/baeldung/dto/SimpleSource.java b/mapstruct/src/main/java/org/baeldung/dto/SimpleSource.java
new file mode 100644
index 0000000000..fc0c75dea3
--- /dev/null
+++ b/mapstruct/src/main/java/org/baeldung/dto/SimpleSource.java
@@ -0,0 +1,24 @@
+package org.baeldung.dto;
+
+public class SimpleSource {
+
+ private String name;
+ private String description;
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+}
diff --git a/mapstruct/src/main/java/org/baeldung/entity/Division.java b/mapstruct/src/main/java/org/baeldung/entity/Division.java
new file mode 100644
index 0000000000..04f1ab2c23
--- /dev/null
+++ b/mapstruct/src/main/java/org/baeldung/entity/Division.java
@@ -0,0 +1,33 @@
+package org.baeldung.entity;
+
+public class Division {
+
+ public Division() {
+ }
+
+ public Division(int id, String name) {
+ super();
+ this.id = id;
+ this.name = name;
+ }
+
+ private int id;
+ private String name;
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+}
diff --git a/mapstruct/src/main/java/org/baeldung/entity/Employee.java b/mapstruct/src/main/java/org/baeldung/entity/Employee.java
new file mode 100644
index 0000000000..55599a17f9
--- /dev/null
+++ b/mapstruct/src/main/java/org/baeldung/entity/Employee.java
@@ -0,0 +1,33 @@
+package org.baeldung.entity;
+
+public class Employee {
+
+ private int id;
+ private String name;
+ private Division division;
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public Division getDivision() {
+ return division;
+ }
+
+ public void setDivision(Division division) {
+ this.division = division;
+ }
+
+}
diff --git a/mapstruct/src/main/java/org/baeldung/entity/SimpleDestination.java b/mapstruct/src/main/java/org/baeldung/entity/SimpleDestination.java
new file mode 100644
index 0000000000..901257c11b
--- /dev/null
+++ b/mapstruct/src/main/java/org/baeldung/entity/SimpleDestination.java
@@ -0,0 +1,24 @@
+package org.baeldung.entity;
+
+public class SimpleDestination {
+
+ private String name;
+ private String description;
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+}
diff --git a/mapstruct/src/main/java/org/baeldung/mapper/EmployeeMapper.java b/mapstruct/src/main/java/org/baeldung/mapper/EmployeeMapper.java
new file mode 100644
index 0000000000..28faffec45
--- /dev/null
+++ b/mapstruct/src/main/java/org/baeldung/mapper/EmployeeMapper.java
@@ -0,0 +1,27 @@
+package org.baeldung.mapper;
+
+import org.baeldung.dto.EmployeeDTO;
+import org.baeldung.entity.Employee;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.Mappings;
+
+@Mapper
+public interface EmployeeMapper {
+
+ @Mappings({
+ @Mapping(target="divisionId",source="entity.division.id"),
+ @Mapping(target="divisionName",source="entity.division.name"),
+ @Mapping(target="employeeId",source="entity.id"),
+ @Mapping(target="employeeName",source="entity.name")
+ })
+ EmployeeDTO employeeToEmployeeDTO(Employee entity);
+
+ @Mappings({
+ @Mapping(target="id",source="dto.employeeId"),
+ @Mapping(target="name",source="dto.employeeName"),
+ @Mapping(target="division",expression="java(new org.baeldung.entity.Division(dto.getDivisionId(),dto.getDivisionName()))")
+ })
+ Employee employeeDTOtoEmployee(EmployeeDTO dto);
+
+}
diff --git a/mapstruct/src/main/java/org/baeldung/mapper/SimpleSourceDestinationMapper.java b/mapstruct/src/main/java/org/baeldung/mapper/SimpleSourceDestinationMapper.java
new file mode 100644
index 0000000000..f3210288d2
--- /dev/null
+++ b/mapstruct/src/main/java/org/baeldung/mapper/SimpleSourceDestinationMapper.java
@@ -0,0 +1,13 @@
+package org.baeldung.mapper;
+
+import org.baeldung.dto.SimpleSource;
+import org.baeldung.entity.SimpleDestination;
+import org.mapstruct.Mapper;
+
+@Mapper
+public interface SimpleSourceDestinationMapper {
+
+ SimpleDestination sourceToDestination(SimpleSource source);
+ SimpleSource destinationToSource(SimpleDestination destination);
+
+}
diff --git a/mapstruct/src/main/java/org/baeldung/mapper/SimpleSourceDestinationSpringMapper.java b/mapstruct/src/main/java/org/baeldung/mapper/SimpleSourceDestinationSpringMapper.java
new file mode 100644
index 0000000000..2077eabf51
--- /dev/null
+++ b/mapstruct/src/main/java/org/baeldung/mapper/SimpleSourceDestinationSpringMapper.java
@@ -0,0 +1,13 @@
+package org.baeldung.mapper;
+
+import org.baeldung.dto.SimpleSource;
+import org.baeldung.entity.SimpleDestination;
+import org.mapstruct.Mapper;
+
+@Mapper(componentModel="spring")
+public interface SimpleSourceDestinationSpringMapper {
+
+ SimpleDestination sourceToDestination(SimpleSource source);
+ SimpleSource destinationToSource(SimpleDestination destination);
+
+}
diff --git a/mapstruct/src/test/java/org/baeldung/mapper/EmployeeMapperTest.java b/mapstruct/src/test/java/org/baeldung/mapper/EmployeeMapperTest.java
new file mode 100644
index 0000000000..0433013f2e
--- /dev/null
+++ b/mapstruct/src/test/java/org/baeldung/mapper/EmployeeMapperTest.java
@@ -0,0 +1,48 @@
+package org.baeldung.mapper;
+
+import static org.junit.Assert.*;
+
+import org.baeldung.dto.EmployeeDTO;
+import org.baeldung.entity.Division;
+import org.baeldung.entity.Employee;
+import org.junit.Test;
+import org.mapstruct.factory.Mappers;
+
+public class EmployeeMapperTest {
+
+ @Test
+ public void givenEmployeeDTOtoEmployee_whenMaps_thenCorrect(){
+ EmployeeMapper mapper = Mappers.getMapper(EmployeeMapper.class);
+
+ EmployeeDTO dto = new EmployeeDTO();
+ dto.setDivisionId(1);
+ dto.setDivisionName("IT Division");
+ dto.setEmployeeId(1);
+ dto.setEmployeeName("John");
+
+ Employee entity = mapper.employeeDTOtoEmployee(dto);
+
+ assertEquals(dto.getDivisionId(), entity.getDivision().getId());
+ assertEquals(dto.getDivisionName(), entity.getDivision().getName());
+ assertEquals(dto.getEmployeeId(),entity.getId());
+ assertEquals(dto.getEmployeeName(),entity.getName());
+ }
+
+ @Test
+ public void givenEmployeetoEmployeeDTO_whenMaps_thenCorrect(){
+ EmployeeMapper mapper = Mappers.getMapper(EmployeeMapper.class);
+
+ Employee entity = new Employee();
+ entity.setDivision(new Division(1,"IT Division"));
+ entity.setId(1);
+ entity.setName("John");
+
+ EmployeeDTO dto = mapper.employeeToEmployeeDTO(entity);
+
+ assertEquals(dto.getDivisionId(), entity.getDivision().getId());
+ assertEquals(dto.getDivisionName(), entity.getDivision().getName());
+ assertEquals(dto.getEmployeeId(),entity.getId());
+ assertEquals(dto.getEmployeeName(),entity.getName());
+ }
+
+}
diff --git a/mapstruct/src/test/java/org/baeldung/mapper/SimpleSourceDestinationMapperTest.java b/mapstruct/src/test/java/org/baeldung/mapper/SimpleSourceDestinationMapperTest.java
new file mode 100644
index 0000000000..a7e3b05dc6
--- /dev/null
+++ b/mapstruct/src/test/java/org/baeldung/mapper/SimpleSourceDestinationMapperTest.java
@@ -0,0 +1,44 @@
+package org.baeldung.mapper;
+
+import static org.junit.Assert.*;
+
+import org.baeldung.dto.SimpleSource;
+import org.baeldung.entity.SimpleDestination;
+import org.junit.Test;
+import org.mapstruct.factory.Mappers;
+
+public class SimpleSourceDestinationMapperTest {
+
+ @Test
+ public void givenSimpleSourceToSimpleDestination_whenMaps_thenCorrect() {
+ SimpleSourceDestinationMapper simpleSourceDestinationMapper = Mappers
+ .getMapper(SimpleSourceDestinationMapper.class);
+
+ SimpleSource simpleSource = new SimpleSource();
+ simpleSource.setName("SourceName");
+ simpleSource.setDescription("SourceDescription");
+
+ SimpleDestination destination =
+ simpleSourceDestinationMapper.sourceToDestination(simpleSource);
+
+ assertEquals(simpleSource.getName(), destination.getName());
+ assertEquals(simpleSource.getDescription(), destination.getDescription());
+ }
+
+ @Test
+ public void givenSimpleDestinationToSourceDestination_whenMaps_thenCorrect() {
+ SimpleSourceDestinationMapper simpleSourceDestinationMapper = Mappers
+ .getMapper(SimpleSourceDestinationMapper.class);
+
+ SimpleDestination destination = new SimpleDestination();
+ destination.setName("DestinationName");
+ destination.setDescription("DestinationDescription");
+
+ SimpleSource source =
+ simpleSourceDestinationMapper.destinationToSource(destination);
+
+ assertEquals(destination.getName(), source.getName());
+ assertEquals(destination.getDescription(), source.getDescription());
+ }
+
+}
diff --git a/spring-rest-angular-pagination/pom.xml b/spring-rest-angular-pagination/pom.xml
index 7a0f3e7b31..db7da64b61 100644
--- a/spring-rest-angular-pagination/pom.xml
+++ b/spring-rest-angular-pagination/pom.xml
@@ -30,6 +30,15 @@
org.springframework.data
spring-data-commons
+
+ org.springframework.boot
+ spring-boot-starter-data-jpa
+
+
+ org.hsqldb
+ hsqldb
+ runtime
+
org.springframework
spring-test
diff --git a/spring-rest-angular-pagination/src/main/java/org/baeldung/mock/MockStudentData.java b/spring-rest-angular-pagination/src/main/java/org/baeldung/mock/MockStudentData.java
index df70780a87..2c37317b75 100644
--- a/spring-rest-angular-pagination/src/main/java/org/baeldung/mock/MockStudentData.java
+++ b/spring-rest-angular-pagination/src/main/java/org/baeldung/mock/MockStudentData.java
@@ -3,34 +3,34 @@ package org.baeldung.mock;
import java.util.ArrayList;
import java.util.List;
-import org.baeldung.web.vo.Student;
+import org.baeldung.web.entity.Student;
public class MockStudentData {
private static List studentList = new ArrayList<>();
- static {
- studentList.add(new Student("1", "Bryan", "Male", 20));
- studentList.add(new Student("2", "Ben", "Male", 22));
- studentList.add(new Student("3", "Lisa", "Female", 24));
- studentList.add(new Student("4", "Sarah", "Female", 26));
- studentList.add(new Student("5", "Jay", "Male", 20));
- studentList.add(new Student("6", "John", "Male", 22));
- studentList.add(new Student("7", "Jordan", "Male", 24));
- studentList.add(new Student("8", "Rob", "Male", 26));
- studentList.add(new Student("9", "Will", "Male", 20));
- studentList.add(new Student("10", "Shawn", "Male", 22));
- studentList.add(new Student("11", "Taylor", "Female", 24));
- studentList.add(new Student("12", "Venus", "Female", 26));
- studentList.add(new Student("13", "Vince", "Male", 20));
- studentList.add(new Student("14", "Carol", "Female", 22));
- studentList.add(new Student("15", "Joana", "Female", 24));
- studentList.add(new Student("16", "Dion", "Male", 26));
- studentList.add(new Student("17", "Evans", "Male", 20));
- studentList.add(new Student("18", "Bart", "Male", 22));
- studentList.add(new Student("19", "Jenny", "Female", 24));
- studentList.add(new Student("20", "Kristine", "Female", 26));
- }
+// static {
+// studentList.add(new Student("1", "Bryan", "Male", 20));
+// studentList.add(new Student("2", "Ben", "Male", 22));
+// studentList.add(new Student("3", "Lisa", "Female", 24));
+// studentList.add(new Student("4", "Sarah", "Female", 26));
+// studentList.add(new Student("5", "Jay", "Male", 20));
+// studentList.add(new Student("6", "John", "Male", 22));
+// studentList.add(new Student("7", "Jordan", "Male", 24));
+// studentList.add(new Student("8", "Rob", "Male", 26));
+// studentList.add(new Student("9", "Will", "Male", 20));
+// studentList.add(new Student("10", "Shawn", "Male", 22));
+// studentList.add(new Student("11", "Taylor", "Female", 24));
+// studentList.add(new Student("12", "Venus", "Female", 26));
+// studentList.add(new Student("13", "Vince", "Male", 20));
+// studentList.add(new Student("14", "Carol", "Female", 22));
+// studentList.add(new Student("15", "Joana", "Female", 24));
+// studentList.add(new Student("16", "Dion", "Male", 26));
+// studentList.add(new Student("17", "Evans", "Male", 20));
+// studentList.add(new Student("18", "Bart", "Male", 22));
+// studentList.add(new Student("19", "Jenny", "Female", 24));
+// studentList.add(new Student("20", "Kristine", "Female", 26));
+// }
public static List getMockDataStudents(){
return studentList;
diff --git a/spring-rest-angular-pagination/src/main/java/org/baeldung/web/dao/StudentRepository.java b/spring-rest-angular-pagination/src/main/java/org/baeldung/web/dao/StudentRepository.java
new file mode 100644
index 0000000000..0f468a48f1
--- /dev/null
+++ b/spring-rest-angular-pagination/src/main/java/org/baeldung/web/dao/StudentRepository.java
@@ -0,0 +1,10 @@
+package org.baeldung.web.dao;
+
+import org.baeldung.web.entity.Student;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface StudentRepository extends JpaRepository {
+
+}
diff --git a/spring-rest-angular-pagination/src/main/java/org/baeldung/web/vo/Student.java b/spring-rest-angular-pagination/src/main/java/org/baeldung/web/entity/Student.java
similarity index 61%
rename from spring-rest-angular-pagination/src/main/java/org/baeldung/web/vo/Student.java
rename to spring-rest-angular-pagination/src/main/java/org/baeldung/web/entity/Student.java
index 11c503815d..59a64b04e8 100644
--- a/spring-rest-angular-pagination/src/main/java/org/baeldung/web/vo/Student.java
+++ b/spring-rest-angular-pagination/src/main/java/org/baeldung/web/entity/Student.java
@@ -1,7 +1,12 @@
-package org.baeldung.web.vo;
+package org.baeldung.web.entity;
import java.io.Serializable;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+
+@Entity
public class Student implements Serializable {
/**
@@ -12,25 +17,29 @@ public class Student implements Serializable {
public Student() {
}
- public Student(String studentId, String name, String gender, Integer age) {
+ public Student(long id, String name, String gender, Integer age) {
super();
- this.studentId = studentId;
+ this.id = id;
this.name = name;
this.gender = gender;
this.age = age;
}
- private String studentId;
+ @Id
+ private long id;
+ @Column(nullable = false)
private String name;
+ @Column(nullable = false)
private String gender;
+ @Column(nullable = false)
private Integer age;
- public String getStudentId() {
- return studentId;
+ public long getId() {
+ return id;
}
- public void setStudentId(String studentId) {
- this.studentId = studentId;
+ public void setId(long id) {
+ this.id = id;
}
public String getName() {
diff --git a/spring-rest-angular-pagination/src/main/java/org/baeldung/web/main/Application.java b/spring-rest-angular-pagination/src/main/java/org/baeldung/web/main/Application.java
index b3b0dad98a..15e386a23d 100644
--- a/spring-rest-angular-pagination/src/main/java/org/baeldung/web/main/Application.java
+++ b/spring-rest-angular-pagination/src/main/java/org/baeldung/web/main/Application.java
@@ -4,13 +4,13 @@ import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Import;
import org.springframework.web.filter.ShallowEtagHeaderFilter;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
@SpringBootApplication
@EnableAutoConfiguration
-@ComponentScan("org.baeldung")
+@Import(PersistenceConfig.class)
public class Application extends WebMvcConfigurerAdapter {
diff --git a/spring-rest-angular-pagination/src/main/java/org/baeldung/web/main/PersistenceConfig.java b/spring-rest-angular-pagination/src/main/java/org/baeldung/web/main/PersistenceConfig.java
new file mode 100644
index 0000000000..2a50f19907
--- /dev/null
+++ b/spring-rest-angular-pagination/src/main/java/org/baeldung/web/main/PersistenceConfig.java
@@ -0,0 +1,37 @@
+package org.baeldung.web.main;
+
+import javax.sql.DataSource;
+
+import org.springframework.boot.orm.jpa.EntityScan;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.jdbc.datasource.embedded.EmbeddedDatabase;
+import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder;
+import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType;
+
+@EnableJpaRepositories("org.baeldung")
+@ComponentScan(basePackages = { "org.baeldung.web" })
+@EntityScan("org.baeldung.web.entity")
+@Configuration
+public class PersistenceConfig {
+
+ @Bean
+ public JdbcTemplate getJdbcTemplate() {
+ return new JdbcTemplate(dataSource());
+ }
+
+ @Bean
+ public DataSource dataSource() {
+
+ EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder();
+ EmbeddedDatabase db = builder
+ .setType(EmbeddedDatabaseType.HSQL)
+ .addScript("db/sql/data.sql")
+ .build();
+ return db;
+ }
+
+}
diff --git a/spring-rest-angular-pagination/src/main/java/org/baeldung/web/rest/StudentDirectoryRestController.java b/spring-rest-angular-pagination/src/main/java/org/baeldung/web/rest/StudentDirectoryRestController.java
index b655d401a5..1aa9390aee 100644
--- a/spring-rest-angular-pagination/src/main/java/org/baeldung/web/rest/StudentDirectoryRestController.java
+++ b/spring-rest-angular-pagination/src/main/java/org/baeldung/web/rest/StudentDirectoryRestController.java
@@ -1,17 +1,14 @@
package org.baeldung.web.rest;
+import org.baeldung.web.entity.Student;
import org.baeldung.web.service.StudentService;
-import org.baeldung.web.vo.Student;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
-import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
-import static org.springframework.http.MediaType.APPLICATION_JSON;
-
@RestController
public class StudentDirectoryRestController {
diff --git a/spring-rest-angular-pagination/src/main/java/org/baeldung/web/service/IOperations.java b/spring-rest-angular-pagination/src/main/java/org/baeldung/web/service/IOperations.java
index 0b408106ce..c124c9e0a0 100644
--- a/spring-rest-angular-pagination/src/main/java/org/baeldung/web/service/IOperations.java
+++ b/spring-rest-angular-pagination/src/main/java/org/baeldung/web/service/IOperations.java
@@ -4,6 +4,6 @@ import org.springframework.data.domain.Page;
public interface IOperations {
- Page findPaginated(int page, int size);
+ public Page findPaginated(final int page, final int size);
}
diff --git a/spring-rest-angular-pagination/src/main/java/org/baeldung/web/service/StudentService.java b/spring-rest-angular-pagination/src/main/java/org/baeldung/web/service/StudentService.java
index 5c4487254a..df40bb6b9e 100644
--- a/spring-rest-angular-pagination/src/main/java/org/baeldung/web/service/StudentService.java
+++ b/spring-rest-angular-pagination/src/main/java/org/baeldung/web/service/StudentService.java
@@ -1,6 +1,6 @@
package org.baeldung.web.service;
-import org.baeldung.web.vo.Student;
+import org.baeldung.web.entity.Student;
public interface StudentService extends IOperations{
diff --git a/spring-rest-angular-pagination/src/main/java/org/baeldung/web/service/StudentServiceImpl.java b/spring-rest-angular-pagination/src/main/java/org/baeldung/web/service/StudentServiceImpl.java
index 3b6dda6fb1..fd9262cfc6 100644
--- a/spring-rest-angular-pagination/src/main/java/org/baeldung/web/service/StudentServiceImpl.java
+++ b/spring-rest-angular-pagination/src/main/java/org/baeldung/web/service/StudentServiceImpl.java
@@ -1,36 +1,24 @@
package org.baeldung.web.service;
-import java.util.List;
+import javax.transaction.Transactional;
-import org.baeldung.mock.MockStudentData;
-import org.baeldung.web.exception.MyResourceNotFoundException;
-import org.baeldung.web.vo.Student;
+import org.baeldung.web.dao.StudentRepository;
+import org.baeldung.web.entity.Student;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
-import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.PageRequest;
import org.springframework.stereotype.Service;
@Service
+@Transactional
public class StudentServiceImpl implements StudentService {
- private List mockDataStudent = MockStudentData.getMockDataStudents();
+ @Autowired
+ private StudentRepository dao;
@Override
- public Page findPaginated(int page, int size){
- Page studentPage = getPage(page, size);
- return studentPage;
- }
-
- private Page getPage(int page, int size) {
- page = page != 0?page - 1:page;
- int from = Math.max(0, page * size);
- int to = Math.min(mockDataStudent.size(), (page + 1) * size);
- if(from > to){
- throw new MyResourceNotFoundException("page number is higher than total pages.");
- }
- return new PageImpl(mockDataStudent.subList(from, to),
- new PageRequest(page,size),
- mockDataStudent.size());
+ public Page findPaginated(int page, int size) {
+ return dao.findAll(new PageRequest(page,size));
}
}
diff --git a/spring-rest-angular-pagination/src/main/resources/application.properties b/spring-rest-angular-pagination/src/main/resources/application.properties
index e42588cee0..9b4f95a9dc 100644
--- a/spring-rest-angular-pagination/src/main/resources/application.properties
+++ b/spring-rest-angular-pagination/src/main/resources/application.properties
@@ -1 +1,3 @@
-server.contextPath=/
\ No newline at end of file
+server.contextPath=/
+spring.h2.console.enabled=true
+logging.level.org.hibernate.SQL=debug
\ No newline at end of file
diff --git a/spring-rest-angular-pagination/src/main/resources/db/sql/data.sql b/spring-rest-angular-pagination/src/main/resources/db/sql/data.sql
new file mode 100644
index 0000000000..d9f6ac610a
--- /dev/null
+++ b/spring-rest-angular-pagination/src/main/resources/db/sql/data.sql
@@ -0,0 +1,9 @@
+CREATE TABLE student (
+ id INTEGER PRIMARY KEY,
+ name VARCHAR(30),
+ gender VARCHAR(10),
+ age INTEGER
+);
+
+INSERT INTO student (id,name,gender,age)
+VALUES (1,'Bryan', 'Male',20);
\ No newline at end of file