【问题标题】:how to change object to string(java spring boot)如何将对象更改为字符串(java spring boot)
【发布时间】:2019-10-31 09:07:25
【问题描述】:

当我运行代码时,我得到了对象

[[Ljava.lang.Object;@8f17f7c, [Ljava.lang.Object;@6c0a4f24, 
 [Ljava.lang.Object;@be4886c, [Ljava.lang.Object;@1760591d, 
 [Ljava.lang.Object;@14e9ce12, [Ljava.lang.Object;@2aa4c0c4, 
 [Ljava.lang.Object;@5ac9a14]

所以..我想得到下面的字符串结果,请教我方法

[Dataset_info(Ds_id=1111, ds_code=a, ds_name=e, ds_category=g, ds_stru=q, insert_ddtt=null, update_ddtt=null), Dataset_info(Ds_id=11111, ds_code=z, ds_name=eww, ds_category =g, ds_stru=q, insert_ddtt=null, update_ddtt=null)]

@Data
@Entity
@Table(name = "category")
@DynamicInsert
@DynamicUpdate
@NoArgsConstructor
@AllArgsConstructor
public class Category {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "category_id", columnDefinition = "INT(11)")
    private Integer Category_id;
    @Column(name = "name", columnDefinition = "VARCHAR(20)")
    private String name;
    @Column(name = "parent", columnDefinition = "int(11)")
    private Integer parent;

}

这是我的分类代码

@RestController
@RequestMapping(value = "/Category")
@Slf4j
public class CategoryController {
    @Autowired CategoryRepository categoryRepository;

    @RequestMapping(value = "/all", method =
        RequestMethod.GET)
    @ResponseBody
    public String getCategoryList() {
        List < Object[] > all =
            this.categoryRepository.findByCategory();
        return all.toString();
        //log.info(query);
        //return "Test";
    }
}

这是我的 CategoryController 代码

import java.util.List;


@Repository
public interface CategoryRepository extends
JpaRepository < Category, Integer > {
    public static final String FIND_PROJECTS = "SELECT t1.name 
    AS lev1,
    t2.name as lev2,
    t3.name as lev3,
    t4.name as lev4
    FROM category AS t1 LEFT JOIN category AS t2 ON t2.parent =
    t1.category_id LEFT JOIN category AS t3 ON t3.parent =
    t2.category_id LEFT JOIN category AS t4 ON t4.parent =
    t3.category_id WHERE t1.name = 'ROOT'
    ";

    @Query(value = FIND_PROJECTS, nativeQuery = true)
    public List < Object[] > findByCategory();

}

这是我的 CategoryRepository 代码

private void mysql2() {

    this.categoryRepository.findByCategory();
}

这是我的应用程序运行代码

所以请教我,我渴望知道路 谢谢

【问题讨论】:

  • 你必须在你的实体类(Category)上实现并覆盖 toString() 方法

标签: java mysql spring spring-boot jsp


【解决方案1】:

您可以使用投影来包含这些值

public interface CategoryProjection {
   public String getLev1();
   public String getLev2();
   public String getLev3();
   public String getLev4();
}

然后使用接口Projection with Repository

//...
@Query(value = FIND_PROJECTS, nativeQuery = true)
public List<CategoryProjection> findByCategory();

如何访问 Projections 中的值

因为它是一个接口,所以只有getter方法。

  • 使用循环(foreach 循环、fori 循环...)

例如:

List<CategoryProjection> list = categoryRepository.findByCategory();

list.forEach(c -> {
      System.out.println(c.getLev1() + " - " + c.getLev2());
});
// loop i
for (int i = 0; i < list.size(); i++) {
   System.out.println(list.get(i).getLev1() + " - " + list.get(i).getLev2());         
}
  • 使用索引

ex : 获取索引 0 中的对象类别

String lev1 = list.get(0).getLev1();

【讨论】:

  • 我更改了代码并且它工作了但是.. 我得到了结果 [org.springframework.data.jpa.repository.query.AbstractJpaQuery$TupleConverter$TupleBackedMap@5ba6132b, org.springframework.data.jpa .repository.query.AbstractJpaQuery$TupleConverter$TupleBackedMap@28264619, org.springframework.data.jpa.repository.query.AbstractJpaQuery$TupleConverter$TupleBackedMap@6ab78994, org.springframework.data.jpa.repository.query.AbstractJpaQuery$TupleBackedMap @50dd821f] 如何.. 获取内容而不是对象.. 你能告诉我
  • 嗨@hognkun,如果你还在这里,请再看看我的回答。我已经包括了如何访问投影值。谢谢你问我:)。
  • 非常感谢它对我有用,但现在控制台中打印的结果不在网页上,所以有什么方法可以显示 spring boot 网页?
  • 我改变了所有我很感激的东西,非常感谢
  • @hognkun 是的,但是你能把我的答案作为正确答案吗?
【解决方案2】:

UPD: 在你的情况下,我认为你可以将方法返回类型更改为 List,HttpMessageConverter 会将结果作为 JSON 字符串转换为客户端。希望对您有所帮助。

@ResponseBody
public List getCategoryList() {
    List<Object[]> all = this.categoryRepository.findByCategory();
    return all;
}

在您的 POJO 对象中覆盖 toString() 方法。例如:

public class Category {
    private Integer Category_id;
    private String name;
    private Integer parent;
    //omitted getter/setter

    @Override
    public String toString() {
        return "Category{" +
                "Category_id=" + Category_id +
                ", name='" + name + '\'' +
                ", parent=" + parent +
                '}';
    }
}

【讨论】:

  • 这没有意义,因为他的返回类型不是 POJO 类!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-13
  • 2015-08-29
  • 2018-10-16
  • 2021-04-06
  • 1970-01-01
  • 2022-11-04
  • 1970-01-01
相关资源
最近更新 更多