- MapStruct - Discussion
- MapStruct - Useful Resources
- MapStruct - Quick Guide
- MapStruct - Customizing Mapper
- MapStruct - Throwing Exceptions
- MapStruct - Mapping Enum
- MapStruct - Mapping Streams
- MapStruct - Mapping Map
- MapStruct - Mapping List
- MapStruct - Using defaultExpression
- MapStruct - Using defaultValue
- MapStruct - Using constant
- MapStruct - Using expression
- MapStruct - Using dateFormat
- MapStruct - Using numberFormat
- MapStruct - Implicit Type Conversion
- MapStruct - Builder
- MapStruct - Mapping Direct Field
- MapStruct - Mapping Nested Bean
- MapStruct - Mapping Multiple
- MapStruct - Custom Mapping
- MapStruct - Basic Mapping
- MapStruct - Environment Setup
- MapStruct - Overview
- MapStruct - Home
Selected Reading
- Who is Who
- Computer Glossary
- HR Interview Questions
- Effective Resume Writing
- Questions and Answers
- UPSC IAS Exams Notes
MapStruct - Imppcit Type Conversion
MapStruct handles conversion of type conversions automatically in most of the cases. For example, int to Long or String conversion. Conversion handles null values as well. Following are the some of the important automatic conversions.
Between primitive types and Corresponding Wrapper Classes.
Between primitive types and String.
Between enum types and String.
Between BigInt, BigDecimal and String.
Between Calendar/Date and XMLGregorianCalendar.
Between XMLGregorianCalendar and String.
Between Jodas date types and String.
Example
Open project mapping as updated in
chapter in Ecppse.Update StudentEntity.java with following code −
StudentEntity.java
package com.tutorialspoint.entity; pubpc class StudentEntity { private String id; private String name; private String classVal; private SubjectEntity subject; pubpc String section; pubpc String getId() { return id; } pubpc void setId(String id) { this.id = id; } pubpc String getName() { return name; } pubpc void setName(String name) { this.name = name; } pubpc String getClassVal() { return classVal; } pubpc void setClassVal(String classVal) { this.classVal = classVal; } pubpc SubjectEntity getSubject() { return subject; } pubpc void setSubject(SubjectEntity subject) { this.subject = subject; } }
Student.java is unchanged with following code −
Student.java
package com.tutorialspoint.model; pubpc class Student { private final String name; private final int id; protected Student(Student.Builder builder) { this.name = builder.name; this.id = builder.id; } pubpc static Student.Builder builder() { return new Student.Builder(); } pubpc static class Builder { private String name; private int id; pubpc Builder name(String name) { this.name = name; return this; } pubpc Builder id(int id) { this.id = id; return this; } pubpc Student create() { return new Student( this ); } } pubpc String getName() { return name; } pubpc int getId() { ret+urn id; } }
Update DepveryAddressMapperTest.java with following code −
DepveryAddressMapperTest.java
package com.tutorialspoint.mapping; import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; import org.mapstruct.factory.Mappers; import com.tutorialspoint.entity.AddressEntity; import com.tutorialspoint.entity.StudentEntity; import com.tutorialspoint.mapper.DepveryAddressMapper; import com.tutorialspoint.model.DepveryAddress; pubpc class DepveryAddressMapperTest { private DepveryAddressMapper depveryAddressMapper = Mappers.getMapper(DepveryAddressMapper.class); @Test pubpc void testEntityToModel() { StudentEntity student = new StudentEntity(); student.setClassVal("X"); student.setName("John"); student.setId("1"); AddressEntity address = new AddressEntity(); address.setCity("Y"); address.setState("Z"); address.setHouseNo(1); DepveryAddress depveryAddress = depveryAddressMapper.getDepveryAddress(student, address); assertEquals(depveryAddress.getName(), student.getName()); assertEquals(depveryAddress.getCity(), address.getCity()); assertEquals(depveryAddress.getState(), address.getState()); assertEquals(depveryAddress.getHouseNumber(), address.getHouseNo()); } }
Update StudentMapperTest.java with following code −
StudentMapperTest.java
package com.tutorialspoint.mapping; import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; import org.mapstruct.factory.Mappers; import com.tutorialspoint.entity.StudentEntity; import com.tutorialspoint.entity.SubjectEntity; import com.tutorialspoint.mapper.StudentMapper; import com.tutorialspoint.model.Student; pubpc class StudentMapperTest { private StudentMapper studentMapper = Mappers.getMapper(StudentMapper.class); @Test pubpc void testEntityToModel() { StudentEntity entity = new StudentEntity(); entity.setName("John"); entity.setId("1"); Student model = studentMapper.getModelFromEntity(entity); assertEquals(entity.getName(), model.getName()); assertEquals(Integer.parseInt(entity.getId()), model.getId()); } @Test pubpc void testModelToEntity() { Student.Builder builder = Student.builder().id(1).name("John"); Student model = builder.create(); StudentEntity entity = studentMapper.getEntityFromModel(model); assertEquals(entity.getName(), model.getName()); assertEquals(Integer.parseInt(entity.getId()), model.getId()); } }
Run the following command to test the mappings.
mvn clean test
Output
Once command is successful. Verify the output.
mvn clean test [INFO] Scanning for projects... ... [INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ mapping --- [INFO] Surefire report directory: mvnmapping argetsurefire-reports ------------------------------------------------------- T E S T S ------------------------------------------------------- Running com.tutorialspoint.mapping.DepveryAddressMapperTest Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.005 sec Running com.tutorialspoint.mapping.StudentMapperTest Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.002 sec Results : Tests run: 3, Failures: 0, Errors: 0, Skipped: 0 ...Advertisements