[英]how to change object to string(java spring boot)
当我运行代码时,我得到了 object
[[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();
}
这是我的应用程序运行代码
所以请教我我很想知道方法谢谢
您可以使用 Projection 来包含这些值:
public interface CategoryProjection {
public String getLev1();
public String getLev2();
public String getLev3();
public String getLev4();
}
然后使用接口 Projection 和 Repository :
//...
@Query(value = FIND_PROJECTS, nativeQuery = true)
public List<CategoryProjection> findByCategory();
如何访问 Projections 中的值
因为它是一个接口,所以只有getter方法。
前任:
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());
}
例如:获取索引 0 中的 Object 类别
String lev1 = list.get(0).getLev1();
UPD:在您的情况下,我认为您可以将方法返回类型更改为 List, HttpMessageConverter
会将结果作为 JSON 字符串转换为客户端。 希望它有所帮助。
@ResponseBody
public List getCategoryList() {
List<Object[]> all = this.categoryRepository.findByCategory();
return all;
}
覆盖 POJO object 中的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 +
'}';
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.