gpt4 book ai didi

java - 我如何获取对象而不是 map 地址?

转载 作者:行者123 更新时间:2023-12-02 01:09:45 25 4
gpt4 key购买 nike

我尝试将java spring boot与mysql连接。当我运行代码时,我得到了这样的 map 地址

这是我的第一个代码

这是 EmpController1

package com.example.rest.controller;


import com.example.rest.repository.R1pro;
import com.google.gson.Gson;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import com.example.rest.repository.EmpRepository1;

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

@RestController
@RequestMapping(value = "/emp")
@Slf4j
public class EmpController1 {
@Autowired
private EmpRepository1 empRepository1;
@RequestMapping(value="/ee", method = RequestMethod.GET)
@ResponseBody
public String getCategoryList() {
List<String> sj = new ArrayList<String>();
Gson gson= new Gson();
System.out.println(123);
List<R1pro> emps1 = this.empRepository1.findByLimit();


return emps1.toString();
}
}

这是我的 EmpRepository1 代码

package com.example.rest.repository;
import com.example.rest.Emp;
import com.example.rest.Emp1;
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 EmpRepository1 extends JpaRepository<Emp1, Integer> {

@Query(value = "select * from d_RANGE limit 1",nativeQuery = true)
public List<R1pro> findByLimit();
}

这是R1pro代码

package com.example.rest.repository;

import java.util.Date;


public interface R1pro {
public String USER_ID();
public String CUST_GP();
}

这是我的 Emp1 代码

package com.example.rest;


import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.persistence.*;
import java.io.Serializable;
import java.sql.Date;
import java.sql.Timestamp;

@Entity
@Table(name = "TEMP_TEST_M78_2W")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Emp1 {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private String USER_ID;
private String CUST_GP;
}

这是我的应用程序代码

package com.example.rest;
import com.example.rest.repository.EmpRepository;
import com.example.rest.repository.EmpRepository1;
import com.example.rest.repository.R1pro;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;

import java.util.List;

@SpringBootApplication
@Slf4j
public class Application {
@Autowired
EmpRepository empRepository;
@Autowired
EmpRepository1 empRepository1;

public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}

@Bean
CommandLineRunner start() {
return args -> {mysql();};
}


private void mysql() {
List<R1pro> emp1 = this.empRepository1.findByLimit();
}
}

当我运行代码时,我得到了这个结果

[org.springframework.data.jpa.repository.query.AbstractJpaQuery$TupleConverter$TupleBackedMap@27ae5583]

所以我更改了 EmpController1 代码

package com.example.rest.controller;


import com.example.rest.repository.R1pro;
import com.google.gson.Gson;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import com.example.rest.repository.EmpRepository1;

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

@RestController
@RequestMapping(value = "/emp")
@Slf4j
public class EmpController1 {
@Autowired
private EmpRepository1 empRepository1;
@RequestMapping(value="/ee", method = RequestMethod.GET)
@ResponseBody
public String getCategoryList() {
List<String> sj = new ArrayList<String>();
Gson gson= new Gson();
System.out.println(123);
List<R1pro> emps1 = this.empRepository1.findByLimit();

for (int i =0; i<emps1.size();i++)
{
sj.add(emps1.get(i).USER_ID()+" "+ emps1.get(i).CUST_GP());
}

return sj.toString();
}
}

当我运行代码时,我收到此错误消息

java.lang.IllegalArgumentException: Invoked method public abstract java.lang.String com.example.rest.repository.R1pro.USER_ID() is no accessor method!

其实这个方法和mysql数据列一样

USER_ID varchar(150) 
CUST_GP varchar(1)

这是我的sql列信息

我不知道问题是什么,也不知道有什么解决方案..所以如果有人知道请教我我真的很佩服能够解决这个问题

谢谢!

最佳答案

你需要将你的界面调整成这样 -

public interface R1pro {
String getUSER_ID();
String getCUST_GP();
}

结果集仅映射到类似于 Emp1 类中创建的 getter 方法

关于java - 我如何获取对象而不是 map 地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59560626/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com