当前位置: 首页 > 知识库问答 >
问题:

如何从本机查询构建json

皇甫飞飙
2023-03-14

我编写的应用程序需要json格式的数据,但获取的数据没有标题

型号:

package intj.frontend.sellkon.model;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

import javax.persistence.*;

@Entity
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "Products")
public class ProductModel {

    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Id
    private Long id;

    @Column(name = "Category")
    private String category;

    @Column(name = "ProductName")
    @Lob
    private String productName;

    @Column(name = "Price")
    private int price;

    @Column(name = "Slider")
    private Boolean slider;

    @Column(name = "SpecialOffer")
    private Boolean specialOffer;

    @Column(name = "NewPrice")
    private int newPrice;

    @Column(name = "FullDescription")
    @Lob
    private String fullDescription;

    @Column(name = "Image")
    @Lob
    private String image;
}

存储库:

package intj.frontend.sellkon.repository;
import intj.frontend.sellkon.model.ProductModel;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface ProductRepository extends JpaRepository<ProductModel,Long> {

    @Query(value = "select id,image,product_name,price,new_price from products where slider is true", nativeQuery = true)
    List<String> getSliderContent();
}

服务

package intj.frontend.sellkon.Service;

import intj.frontend.sellkon.repository.ProductRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

@Service
public class ProductService {

    @Autowired
    private ProductRepository productRepository;

    public List<String> getSliderContent(){
        List<String> lstMovie = new ArrayList<>();
        lstMovie = productRepository.getSliderContent();
        return lstMovie;
    }
}

控制器:

package intj.frontend.sellkon.Controller;
import intj.frontend.sellkon.Service.ProductService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@CrossOrigin("*")
@RestController
@RequestMapping("/products")
public class ProductController {
    @Autowired
    private ProductService productService;

    @GetMapping("/sl")
    public List<String> getSliderContent(){
        List<String> ls = productService.getSliderContent();
        return ls;
    }
}

在输出上,我得到以下数据:

["1,https://cdn.x-kom.pl/i/setup/images/prod/big/product-new-big,,2021/10/pr_2021_10_8_14_22_27_699_08.jpg,Acer Swift 3 i5-1135G7/16GB/512/W11 Srebrny Intel Evo,4800,4500"]

但我需要这种格式的数据:

["id: 1, image: 'https://cdn.x-kom.pl/i/setup/images/prod/big/product-new-big,,2021/10/pr_2021_10_8_14_22_27_699_08.jpg',product name: 'Acer Swift 3 i5-1135G7/16GB/512/W11 Srebrny Intel Evo', price: 4800,new_price: 4500"]

有人能解释一下怎么做吗?我认为问题是因为我返回了字符串,但如何用本机查询返回Json对象呢?

共有1个答案

楚建柏
2023-03-14

如果以String的形式返回数据,则只会得到值,而不是列,因此必须在列表中传递ProductModel,而不是String

下面是修改后的代码:

存储库

@Repository
public interface ProductRepository extends JpaRepository<ProductModel,Long> {

    @Query(value = "Select id, image, product_name, price, new_price from products WHERE slider = ?", nativeQuery = true)
    List<ProductModel> getSliderContent(Boolean slider);
}

服务

@Service
public class ProductService {

    @Autowired
    private ProductRepository productRepository;

    public List<ProductModel> getSliderContent(Boolean slider){
        return productRepository.getSliderContent(slider);
    }
}

控制

@RequestMapping("/products")
public class ProductController {
    @Autowired
    private ProductService productService;

    @GetMapping("/sl")
    public ResponseEntity<List<ProductModel>> getSliderContent(){
        List<ProductModel> ls = productService.getSliderContent("true");
        return ls;
    }
}
 类似资料:
  • 假设我们有下表,命名为“文档”: 两个*日期列是时间戳,而另一个都是字符串(甚至是) 目前我在Spring存储库中使用了以下本机查询: 如您所见,这必须用作本机查询,因为JPA不支持子句中的选择查询。现在我必须将此查询转换为JPQL查询,以使其独立于数据库。这在某种程度上是可能的吗?欢迎其他方法,例如使用规范或类似的...

  • 我刚刚开始将QueryDSL集成到一个Spring Boot项目中,我正在寻找一种从现有实体bean构建查询的方法。使用,只要参数与bean对齐,通过控制器的GET请求传入实体是非常好和容易的: 在service类中,我可以使用BooleanBuilder构建查询: 那么有没有一种好的、整洁的方法来处理这种情况,而不会用样板文件堵塞我的服务课程呢?

  • 问题内容: 是否有一个库,可以像JPA中那样以编程方式构建SPARQL查询,或者可以像使用for SQL 一样构建查询? 问题答案: 您可以使用两种方法在Jena中以编程方式构建查询:语法或代数。耶拿维基上有一个介绍。 使用代数,您将执行以下操作: (摘自Wiki页面) 不是(也不是预期的),但是那是其中的一些方式。您而不是AND,而您想要进行OR等。痛点是我的经验中的表达式:您可能想从字符串中解

  • 我正在我的机器上的docker容器中运行服务器。我想从我的机器(主机)向容器内的服务器发送HTTP请求。当我在容器中使用HTTP发送GET请求时,它会检测服务器。但是,如果我向容器的IP地址发送相同的请求(这次是从容器外部的主机),它会告诉我: 或者这个: 下面是我启动容器时使用的命令: 以及我为发送请求而运行的Python脚本: 下面是我用来查找容器IP地址的命令: 我知道这个问题,但我没有使用

  • 查询构建器建立在 Database Access Objects 基础之上,可让你创建 程序化的、DBMS无关的SQL语句。相比于原生的SQL语句,查询构建器可以帮你 写出可读性更强的SQL相关的代码,并生成安全性更强的SQL语句。 使用查询构建器通常包含以下两个步骤: 创建一个 yii\db\Query 对象来代表一条 SELECT SQL 语句的不同子句(例如 SELECT, FROM)。 执

  • 我想在我的repo中写一个本机查询“Select*in from table”。表名与实体名不同。 运行查询时, 1如果我把实体名称返回表未找到。 2如果我将表名放在查询中,则查询的验证失败。 问题是 如果我使用"Select*from TariffPacks r2..., nativeQuery=true",我得到错误TariffPacks不存在。如果我使用"Select*from RECHAR