我正在练习用spring boot制作网页。
我创建了一个h2数据库并连接了它,我想在我的网页上显示成员表的名称属性作为列表。
我创建了findall()方法,但是只返回一个空列表。我的代码有什么问题?
我的网页
MemberRepository
package com.example.testproject.store.h2.repository;
import com.example.testproject.store.h2.domain.Members;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface MemberRepository extends JpaRepository<Members, Integer> {
}
MemberService
package com.example.testproject.store.h2.service;
import com.example.testproject.store.h2.domain.Members;
import java.util.List;
public interface MemberService {
List<Members> getAll();
}
MemberServiceImpl
package com.example.testproject.store.h2.service;
import com.example.testproject.store.h2.domain.Members;
import com.example.testproject.store.h2.repository.MemberRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.lang.reflect.Member;
import java.util.List;
@Service(value = "memberServiceImpl")
public class MemberServiceImpl implements MemberService {
@Autowired
private MemberRepository memberRepository;
public List<Members> getAll(){
return memberRepository.findAll();
}
}
MemberController
package com.example.testproject.controller;
import com.example.testproject.store.h2.domain.Members;
import com.example.testproject.store.h2.service.MemberService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
public class MemberController {
@Autowired
private MemberService memberService;
@GetMapping(value = "/members")
public List<Members> getAll() {
List<Members> users = memberService.getAll();
return users;
}
/*@GetMapping(value = "/members")
public List<Members> getAll() throws Exception {
return memberService.getAll();
}*/
}
成员(实体)
package com.example.testproject.store.h2.domain;
import jakarta.persistence.*;
@Entity
@Table(name = "members")
public class Members {
@Id
private int id;
@Column
private String name;
}
我想在我的网页上以列表的形式显示成员表的名称属性。
您错过了实体类中的getter setter方法,您需要为每个字段定义getter setter方法或2:你需要在pom.xml文件中添加lombook依赖,并在实体类的顶部添加@Data注释,这样当spring使用你的实体时,可以从数据库中设置和获取值,如果你不想明确地给出id,那么添加@GeneratedValue(strategy=GenerationType.AUTO),这样spring就会自动增加你的id
我想你在Entity
中遗漏了getter和setter类只是使用@Data
注释添加它们,然后再试一次。
您错过了实体中字段的getter和setter
你不需要任何库,你可以自己写。
否则,即使使用lombok
,也应避免在Entity
上使用@Data
注释,因为equals
和hashCode
的默认实现可能导致错误。相反,可以在类上使用注释@Getter
和@Setter
。