简体   繁体   English

将原始 sql 查询映射到 DTO 对象 Spring

[英]Mapping raw sql query into DTO object Spring

SPRING BOOT , JAVA 11 , POSTGRES弹簧靴 , JAVA 11 , POSTGRES

I have a big SQL query:我有一个很大的 SQL 查询:

select c.id,c.image_url,c.status,c.name, cat.id,cat.name
from client_organization o join organization c
on o.organization_id = c.id
join client w on o.client_id = w.id
join org_category cat on c.category_id = cat.id
where w.id = ?

So i need to convert the given result to List of Data Transfer Objects(DTO).所以我需要将给定的结果转换为数据传输对象列表(DTO)。 If it is important, here is my DTO(constructor, getters and setters are not included):如果这很重要,这是我的 DTO(不包括构造函数、getter 和 setter):

public class OrganizationListDto {
    Long id;
    String image;
    Boolean status;
    String name;
    Long categoryId;
    String categoryName;
}

I have been looking for solution for some days and found that this operation can be implemented in different ways(jdbc, hibernate etc) So please explain me what and when I need to use them?我一直在寻找解决方案几天,发现这个操作可以通过不同的方式实现(jdbc、hibernate等)所以请解释我什么时候需要使用它们? How to implement this operation?如何实现这个操作?

Follow the below approach have used spingJpa

@Service public class OrganizationServiceImpl @Service 公共类 OrganizationServiceImpl

{
    @Autowired
    OrganizationListRepository organizationListRepository;

        public OrganizationListDto  fetch(usrId)
        {
        OrganizationListDto orgListData = new OrganizationListDto();
    List<OrganizationListMapping> orgData = organizationListRepository.fetchData(usrId);
    BeanUtils.copy(orgData,orgListData)

        return orgData;
        }

}

@Repository public interface OrganizationListRepository extends JpaRepository{ @Repository 公共接口 OrganizationListRepository 扩展 JpaRepository{

@Query(native="true",value="select  cat.id as id,cat.name as name
from client_organization o join organization c
on o.organization_id = c.id
join client w on o.client_id = w.id
join org_category cat on c.category_id = cat.id
where w.id = usrId"
OrganizationListMapping fetchData(@Param ("usrId") Integer usrId);
}

public interface OrganizationListMapping {
    public Long getId();
    public String getName();

}


public class OrganizationListDto {
    Long id;
    String name;

}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 将 JPA 或 Hibernate 投影查询映射到 DTO(数据传输对象) - Mapping JPA or Hibernate projection query to DTO (Data Transfer Object) Hibernate对象的Dozer映射到DTO - Dozer mapping for Hibernate object to DTO 如何将sql本机查询结果映射到spring jpa存储库中的DTO? - How to map sql native query result into DTO in spring jpa repository? Mapstruct映射查询:将属性从dto映射到实体,而不是dto上的属性 - Mapstruct mapping query :mapping an attribute from dto to entity but not an attibute on dto 将SQL查询的结果映射到DTO对象(具有内部列表) - Map result of sql query to DTO object(which has inner list) 在Spring Boot Rest中将GET请求参数与DTO对象映射时出现的问题 - Issue when mapping GET request parameters with DTO object in Spring Boot Rest 将请求 DTO 映射到实体对象的设计模式? - Design pattern for mapping request DTO to Entity object? 将域实体和一些列表映射到 Dto object - Mapping domain entity and some list to Dto object @Mapping 注释未正确映射以将实体 object 转换为 DTO object - @Mapping annotation is not mapping correctly to convert Entity object to DTO object Spring Data-JPA:使用DTO和IF语句发出查询 - Spring data - JPA : issue query with DTO and IF statement
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM