[BYSX] SpringBoot项目中分页功能后端实现
在前面,我使用SSM框架实现分页功能,那时,我创建PageInfo实体类,Mybatis框架编写SQL语句实现分页。这一次,我在SpringBoot项目中再次实现分页功能,不在需要创建实体类,数据库访问使用JPA完成,整个过程变得更简单。具体如何做呢?接下来我们来实现。
控制层
该层注入一个服务层的对象,然后使用服务层方法获得page对象,这里需要使用框架中的类来帮助实现,该方法还有一个model参数,负责将对象传递到前端。
@Controller
@RequestMapping("/admin/types")
public class TypeController {
@Autowired
private TypeService typeService;
@RequestMapping
public String list(@PageableDefault(size = 5,sort = {"id"},direction = Sort.Direction.DESC) Pageable pageable, Model model){
Page<Type> page = typeService.listType(pageable);
model.addAttribute("page",page);
return "admin/types";
}
}
服务层
该层注入一个dao层的对象,调用它的方法得到所需对象。
//接口
public interface TypeService {
Page<Type> listType(Pageable pageable);
}
//实现
@Service
public class TypeServiceImpl implements TypeService {
@Autowired
private TypeDao typeDao;
@Override
public Page<Type> listType(Pageable pageable) {
return typeDao.findAll(pageable);
}
}
dao层
该层使用JPA完成数据库的操作,需要在配置文件中配置JPA和数据库。这里我使用yml文件的形式,配置如下
server:
port: 8081
spring:
datasource:
url: jdbc:mysql://localhost:3306/tnews?characterEncoding=utf-8&serverTimezone=UTC
driver-class-name: com.mysql.jdbc.Driver
username: root
password: 123456
jpa:
hibernate:
ddl-auto: update
show-sql: true
然后,我们创建一个接口。
public interface TypeDao extends JpaRepository<Type,Long> {
}
这样我们就完成了功能实现。dao层什么都没有?SSM框架实现分页功能我们还编写sql语句查询数据库。其实,这些都已经被框架帮我们实现了。我们这里当然还需要一个实体类与数据库的表对应,实体类如下:
@Entity
@Table(name = "t_type")
public class Type {
@Id
@GeneratedValue
private Long id;
private String name;
@OneToMany(mappedBy = "type")
private List<News> news = new ArrayList<>();
public Type() {
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<News> getNews() {
return news;
}
public void setNews(List<News> news) {
this.news = news;
}
@Override
public String toString() {
return "Type{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
}