Spring Boot: как получить имя пользователя по user_id? - PullRequest
0 голосов
/ 25 января 2019

Я уже подключил свой springboot к базе данных MySQL.Я хочу отобразить имя пользователя, когда в запросе HTTP указано user_id.Например, http://8080/user/1 должен отображать имя пользователя с user_id 1.

Таблица содержит атрибуты:

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

Я уже пробовал этот код в классе контроллера, но япохоже, не работает

     @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() не определено для типа Необязательный

Но я определил это в классе 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;
}
}

1 Ответ

0 голосов
/ 26 января 2019

В нем отсутствует метод типа 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);
    }

}

UserService.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);
    }

}

UserRepository .java

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

User.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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...