【发布时间】:2021-06-15 22:33:43
【问题描述】:
我想通过使用方法findAll() 获取表users 中所有值的列表。
这是我尝试过的:
User.java
package ch.concertopro.webshopanalyser.entity;
import javax.persistence.*;
@Entity(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
private String name;
@Column(unique = true, nullable = false)
private String email;
private String dob;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getDob() {
return dob;
}
public void setDob(String dob) {
this.dob = dob;
}
}
IUserDao.java
package ch.concertopro.webshopanalyser.dao;
import ch.concertopro.webshopanalyser.entity.User;
import org.springframework.data.repository.CrudRepository;
public interface IUserDao extends CrudRepository<User, Integer> {
}
UserRepository.java
Intellij 生成的代码:
package ch.concertopro.webshopanalyser.repository;
import ch.concertopro.webshopanalyser.dao.IUserDao;
import ch.concertopro.webshopanalyser.entity.User;
import org.springframework.stereotype.Repository;
import java.util.Optional;
@Repository
public class UserRepository implements IUserDao {
@Override
public <S extends User> S save(S s) {
return null;
}
@Override
public <S extends User> Iterable<S> saveAll(Iterable<S> iterable) {
return null;
}
@Override
public Optional<User> findById(Integer integer) {
return Optional.empty();
}
@Override
public boolean existsById(Integer integer) {
return false;
}
@Override
public Iterable<User> findAll() {
return null;
}
@Override
public Iterable<User> findAllById(Iterable<Integer> iterable) {
return null;
}
@Override
public long count() {
return 0;
}
@Override
public void deleteById(Integer integer) {
}
@Override
public void delete(User user) {
}
@Override
public void deleteAll(Iterable<? extends User> iterable) {
}
@Override
public void deleteAll() {
}
}
UserController.java
package ch.concertopro.webshopanalyser.controller;
import ch.concertopro.webshopanalyser.repository.UserRepository;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class UserController {
private final UserRepository userRepository;
public UserController(UserRepository userRepository) {
this.userRepository = userRepository;
}
@RequestMapping("user")
public void getUser() {
System.out.println(userRepository.findAll());
}
}
我得到的输出总是null。为什么?
【问题讨论】:
-
public Iterable<User> findAll() { return null; }不知道你还期待什么...... -
好吧,您覆盖了 findAll() 并将返回类型更改为 null 。就是这样。
-
为什么要自己实现
IUserDao? -
@FedericoklezCulloca 该方法已由 Intellij 生成。如果我删除该方法,我会得到错误 UserRepository is not abstract and does not override abstract method findAll().
-
@Proseller spring 应该自己生成存储库
interfaces,你不必自己实现它,所以只需删除你的UserRepository类
标签: java spring-boot