Pessoal, a minha dúvida é saber a melhor forma de criar um método na Controller para retornar uma viewmodel.
Pessoal, a minha dúvida é saber a melhor forma de criar um método na Controller para retornar uma viewmodel.
Não entendi muito bem, mas vou compartilhar a forma que eu faço. Espero que ajude de alguma forma.
@Entity
@Table(name="T_EXEMPLO")
@SequenceGenerator(name = "EXEMPLO_SEQ", sequenceName = "SQ_EXEMPLO_CODIGO")
@Data
public class Exemplo implements Serializable {
/**
*
*/
private static final long serialVersionUID = 4809055440167929997L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "EXEMPLO_SEQ")
private Long id;
private String campo1;
private String campo2;
private String campo3;
private String campo4;
private String campo5;
}
@Getter
@Setter
public class ExemploDTO {
private String campo1;
private String campo3;
private String campo5;
}
@Repository
public interface ExemploRepository extends JpaRepository<Exemplo, Long> {
@Query("SELECT E.campo1, E.campo3, E.campo5 FROM EXEMPLO E WHERE C.id = :idExemplo")
ExemploDTO getByIdViewModel(Long idExemplo);
}
@Service
public class ExemploService {
@Autowired
private ExemploRepository contatoRepository;
public ExemploDTO getByIdViewModel(Long idContato) {
return contatoRepository.getByIdViewModel(idContato);
}
}
@RestController
@RequestMapping("/exemplo")
public class ExemploController {
@Autowired
private ExemploService exemploService;
@GetMapping("/getByIdViewModel")
public ExemploDTO getByIdViewModel(@RequestParam(name = "id") Long idExemplo) {
return exemploService.getByIdViewModel(idExemplo);
}
}
Obrigado pelo exemplo.