当前位置:   article > 正文

Spring Data Jpa使用总结——使用@Query返回指定json格式的数据_jpa @query 返回列值

jpa @query 返回列值

数据库中有student表:

 

表中有数据: 

现需要获取表中name和address字段的值,并以下列json格式返回:


编写代码:

1、student表对应的实体类

  1. package com.example.demo;
  2. import lombok.Data;
  3. import javax.persistence.Column;
  4. import javax.persistence.Entity;
  5. import javax.persistence.Id;
  6. import javax.persistence.Table;
  7. /**
  8. * @author 肖政宇
  9. * @date 2019-09-05 20:23
  10. * 说明:student表对应的实体类
  11. */
  12. @Data
  13. @Entity
  14. @Table(name = "student")
  15. public class StudentEntity {
  16. @Id
  17. private String id;
  18. @Column
  19. private String name;
  20. @Column
  21. private Integer age;
  22. @Column
  23. private String sex;
  24. @Column
  25. private String address;
  26. @Column
  27. private String phone;
  28. public StudentEntity() {
  29. }
  30. public StudentEntity(String id, String name, Integer age, String sex, String address, String phone) {
  31. this.id = id;
  32. this.name = name;
  33. this.age = age;
  34. this.sex = sex;
  35. this.address = address;
  36. this.phone = phone;
  37. }
  38. }

2、reposotory接口

 

  1. package com.example.demo;
  2. import org.springframework.data.jpa.repository.Query;
  3. import org.springframework.data.repository.PagingAndSortingRepository;
  4. import java.util.List;
  5. import java.util.Map;
  6. /**
  7. * @author 肖政宇
  8. * @date 2019-09-05 20:27
  9. * 说明:
  10. */
  11. public interface StudentRepository extends PagingAndSortingRepository<StudentEntity, String> {
  12. @Query(value = "SELECT id,address FROM student", nativeQuery = true)
  13. List<String> findIdAndAddress1();
  14. @Query(value = "SELECT id,address FROM student", nativeQuery = true)
  15. List<Map<String, Object>> findIdAndAddress2();
  16. @Query(value = "SELECT id as 'ID',address as 'ADDRESS' FROM student", nativeQuery = true)
  17. List<Map<String, Object>> findIdAndAddress3();
  18. }

3、定义3个接口分别调用3个函数

  1. package com.example.demo;
  2. import com.example.util.msg.Message;
  3. import com.example.util.msg.MessageBox;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.web.bind.annotation.GetMapping;
  6. import org.springframework.web.bind.annotation.RequestMapping;
  7. import org.springframework.web.bind.annotation.ResponseBody;
  8. import org.springframework.web.bind.annotation.RestController;
  9. /**
  10. * @author 肖政宇
  11. * @date 2019-09-05 20:27
  12. * 说明:
  13. */
  14. @RestController
  15. @RequestMapping("student/")
  16. public class StudentController {
  17. @Autowired
  18. StudentRepository repository;
  19. @GetMapping("findAll")
  20. @ResponseBody
  21. public Message findAll() {
  22. return new MessageBox<>(repository.findAll());
  23. }
  24. @GetMapping("findIdAndAddress2")
  25. @ResponseBody
  26. public Message findIdAndAddress2() {
  27. return new MessageBox<>(repository.findIdAndAddress2());
  28. }
  29. @GetMapping("findIdAndAddress3")
  30. @ResponseBody
  31. public Message findIdAndAddress3() {
  32. return new MessageBox<>(repository.findIdAndAddress3());
  33. }
  34. @GetMapping("findIdAndAddress1")
  35. @ResponseBody
  36. public Message findIdAndAddress1() {
  37. return new MessageBox<>(repository.findIdAndAddress1());
  38. }
  39. }

4、分别调用3个接口,接收的数据的格式如下:

函数1:

  1. @Query(value = "SELECT id,address FROM student", nativeQuery = true)
  2. List<String> findIdAndAddress1();

数据1:


函数2:

  1. @Query(value = "SELECT id,address FROM student", nativeQuery = true)
  2. List<Map<String, Object>> findIdAndAddress2();

数据2:


函数3:

  1. @Query(value = "SELECT id as 'ID',address as 'ADDRESS' FROM student", nativeQuery = true)
  2. List<Map<String, Object>> findIdAndAddress3();

数据3:

其实方法3就只是简单的sql语句的应用,但我在实现这个功能的时候一开始没想到这个方法,走了许多弯路。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/人工智能uu/article/detail/739600
推荐阅读
相关标签
  

闽ICP备14008679号