1. Les classes d'entités dans le modèle de domaine sont divisées en quatre types : VO, DTO, DO. , PO
1.VO (View Object), objet de visualisation, utilisé dans la couche de présentation, sa fonction est de mettre une page (ou un composant) spécifié ) encapsule toutes les données.
2.DTO (Data Transfer Object), ce concept vient du modèle de conception J2EE. L'objectif initial est de fournir des entités de données à granularité grossière pour les applications distribuées EJB afin de réduire le nombre d'appels de type. , améliorant ainsi les performances des appels distribués et réduisant la charge du réseau, mais ici, je fais généralement référence aux objets de transfert de données entre la couche de présentation et la couche de service.
3.DO (Domain Object), objet de domaine, est une entité commerciale tangible ou immatérielle abstraite du monde réel.
4.PO (PersistentObject), objet de persistance, qui forme une relation de mappage un-à-un avec la structure de données de la couche de persistance (généralement une base de données relationnelle). base de données, alors, chaque champ (ou plusieurs) de la table de données correspond à un (ou plusieurs) attributs de PO.
5. Exemple :
Le backend renvoie un objet front-end, vous pouvez ***VO.java
objet d'entité de table dao généré par mybatis, vous pouvez ****PO.java
Généralement, PO convertit DO puis convertit DTO pour fournir des services pour les appels externes
. 1. Importer les dépendances
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>5.1.6.RELEASE</version> </dependency>
public class TestDemoDTO{ private String name; private Map<String,String> citys; private Date gmtStart; private Boolean flag; private Integer age; private List<String> types; public String getName() { return name; } public void setName(String name) { this.name = name; } public Map<String, String> getCitys() { return citys; } public void setCitys(Map<String, String> citys) { this.citys = citys; } public Date getGmtStart() { return gmtStart; } public void setGmtStart(Date gmtStart) { this.gmtStart = gmtStart; } public Boolean getFlag() { return flag; } public void setFlag(Boolean flag) { this.flag = flag; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public List<String> getTypes() { return types; } public void setTypes(List<String> types) { this.types = types; } @Override public String toString() { return "TestDemoDTO{" + "name='" + name + '\'' + ", citys=" + citys + ", gmtStart=" + gmtStart + ", flag=" + flag + ", age=" + age + ", types=" + types + '}'; } }
3 A From (définition des paramètres d'entrée front-end From )#🎜🎜. #
public class TestDemoFrom { private String name; private Map<String,String> citys; private Date gmtStart; private Boolean flag; private Integer age; private List<String> types; public String getName() { return name; } public void setName(String name) { this.name = name; } public Map<String, String> getCitys() { return citys; } public void setCitys(Map<String, String> citys) { this.citys = citys; } public Date getGmtStart() { return gmtStart; } public void setGmtStart(Date gmtStart) { this.gmtStart = gmtStart; } public Boolean getFlag() { return flag; } public void setFlag(Boolean flag) { this.flag = flag; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public List<String> getTypes() { return types; } public void setTypes(List<String> types) { this.types = types; } @Override public String toString() { return "TestDemoFrom{" + "name='" + name + '\'' + ", citys=" + citys + ", gmtStart=" + gmtStart + ", flag=" + flag + ", age=" + age + ", types=" + types + '}'; } }4.Classe de test
public class TestDemo { public static void main(String[] args) { TestDemoFrom testDemoFrom = new TestDemoFrom(); HashMap<String, String> map = Maps.newHashMap(); map.put("001","北京"); map.put("002","上海"); map.put("003","广州"); testDemoFrom.setCitys(map); testDemoFrom.setFlag(true); testDemoFrom.setGmtStart(new Date()); testDemoFrom.setName("诺言"); testDemoFrom.setAge(18); testDemoFrom.setTypes(Lists.newArrayList("我爱","宝贝")); System.out.printf(testDemoFrom.toString()+"\n"); //下面就可以开始转化了,就一行代码 TestDemoDTO testDemoDTO = new TestDemoDTO(); BeanUtils.copyProperties(testDemoFrom,testDemoDTO); System.out.println(testDemoDTO.toString()); } }5.Result
TestDemoFrom{name='Promise', villes={001 =Pékin, 002 =Shanghai, 003=Guangzhou}, gmtStart=Vendredi 10 mai 22:37:53 CST 2019, flag=true, age=18, types=[J'aime, bébé]}
TestDemoDTO{name= 'Promesse', villes={001=Pékin, 002=Shanghai, 003=Guangzhou}, gmtStart=Vendredi 10 mai 22:37:53 CST 2019, flag=true, age=18, types=[J'aime, bébé]}
6. RemarqueSi les types sont différents et les noms sont les mêmes, ce sera pareil La valeur ne sera pas attribuée 5. Exemples de code spécifiques de la deuxième méthode (en utilisant dozer)Si les noms d'attribut sont différents, l'affectation ne sera pas possible
Faites attention à l'échec de l'affectation
1. dépendances
<dependency> <groupId>net.sf.dozer</groupId> <artifactId>dozer</artifactId> <version>5.4.0</version> </dependency>2. Classe de test
public class TestDemoDozer { @Test public void test() { DozerBeanMapper mapper = new DozerBeanMapper(); TestDemoFrom testDemoFrom = new TestDemoFrom(); HashMap<String, String> map = Maps.newHashMap(); map.put("001","北京"); map.put("002","上海"); map.put("003","广州"); testDemoFrom.setCitys(map); testDemoFrom.setFlag(true); testDemoFrom.setGmtStart(new Date()); testDemoFrom.setName("诺言"); testDemoFrom.setAge(18); testDemoFrom.setTypes(Lists.newArrayList("我爱","宝贝")); System.out.printf(testDemoFrom.toString()+"\n"); // 转换 TestDemoDTO convert = mapper.map(testDemoFrom,TestDemoDTO.class); System.out.println(convert); } }
TestDemoFrom{name='Promise', villes={001. =Pékin, 002=Shanghai, 003=Guangzhou}, gmtStart= samedi 11 mai 00:30:02 CST 2019, flag=true, age=18, types=[J'aime, bébé]}
TestDemoDTO{name= 'Promesse', villes={001=Pékin, 002=Shanghai, 003=Guangzhou}, gmtStart=Samedi 11 mai 00:30:02 CST 2019, flag=true, age=18, types=[J'aime, bébé]}Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!