【问题标题】:Spring Boot: How to retrieve the username by user_id?Spring Boot:如何通过 user_id 检索用户名?
【发布时间】:2019-06-19 16:56:12
【问题描述】:

我已经将我的 springboot 连接到 MySQL 数据库。我想在 HTTP 请求中指定 user_id 时显示用户名。例如http://8080/user/1 必须以user_id 1 显示用户名。

该表包含以下属性:

| Integer user_id; | String username; | String fathername; | String mothername;

我已经在 Controller 类中尝试过这段代码,但我似乎没有工作

     @RequestMapping("/{userid}")
  @ResponseBody
  public String getById(Integer userid) {
    String name="";
    try {
   Optional<Persondetails> persondetails=persondetailsRepository.findById(personid);
      name = String.valueOf(userdetails.getName());
    }
    catch (Exception ex) {
      return "Name not found";
    }
    return "The Name of the user is : " + name;
  }

我的存储库代码:

import java.util.List;
import java.util.Optional;
public interface UserdetailsRepository extends JpaRepository<Userdetails, Integer> {
public Optional<Userdetails> findById(Integer userid);
}

它说 getName() 对于 Optional 类型未定义

但我已经在 Userdetails 类中定义了它

public class Userdetails {
@Id
@GeneratedValue
@Column(name="user_id")
private Integer userid;
@Column(name="name")
private String name;
@Column (name="fathers_name")
private String fathersname;
@Column(name="mothers_name")
private String mothersname;
    public Userdetails() {  
}
public Integer getUserid() {
    return userid;
}

public void setUserid(Integer userid) {
    this.userid = userid;
}
public String getName() {
    return name;
}

public void setname(String name) {
    this.name = name;
}
public String getFathersname() {
    return fathersname;
}

public void setFathersname(String fathersname) {
    this.fathersname = fathersname;
}

public void setMothersname(String mothersname) {
    this.mothersname = mothersname;
}
public String getMothersname() {
    return mothersname;
}
}

【问题讨论】:

  • http://8080/user/1 不是有效的网址
  • 是的,我举了一个例子。 1表示user_id
  • 回答您的问题需要大量工作。能否请您包括您已经完成的工作?如果您还没有做任何事情,我建议您从一些小事开始并迭代工作,因为这个问题有很多层。
  • 您需要传递应用程序的主机、端口和上下文。例如localhost:8080/demo-user/users/1

标签: mysql spring-boot


【解决方案1】:

它缺少方法类型GET,你可以通过两种选择:

@RequestMapping(value = "/{id}", method = RequestMethod.GET)
 public User findOne(@PathVariable("id") int id){
        return userService.findById(id);
 }

@GetMapping("/{id}")
public String getString(@PathVariable("id") int id) {
    return "Helloworld";
}

Spring boot 连接Mysql并获取数据。

application.properties

server.contextPath=/demo-user
spring.datasource.url=jdbc:mysql://localhost:3306/testdb
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

*Controller.Java

@RequestMapping({"/users"})
public class UserController {

    @Autowired
    private UserService userService;

    @GetMapping(path = {"/{id}"})
    public User findOne(@PathVariable("id") int id){
        return userService.findById(id);
    }

}

用户服务.java

public interface UserService {
    User findById(int id);
}

UserServiceImpl.java

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserRepository repository;

    @Override
    public User findById(int id) {
        return repository.findOne(id);
    }

}

用户存储库.java

public interface UserRepository extends Repository<User, Integer> {
    User findOne(int id);
}

用户.java

@Entity
@Table(name = "user")
public class User {

    @Id
    @Column
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    @Column
    private String firstName;
    @Column
    private String lastName;
    @Column
    private String email;

   //setter and getter
}

从浏览器或应用程序发出请求。

http://localhost:8080/demo-user/users/1

【讨论】:

  • 有什么问题?
猜你喜欢
  • 2018-09-06
  • 1970-01-01
  • 1970-01-01
  • 2012-03-08
  • 1970-01-01
  • 2015-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多