SpringBoot + thymeleaf 实现分页

SpringBoot结合Thymeleaf实现分页,很方便。

效果如下

后台代码

项目结构

1. 数据库Config

由于hibernate自动建表字符集为latin不能插入中文,故需要在application.properties中指定:spring.jpa.properties.hibernate.dialect=com.ikeguang.paging.config.MysqlConfig。
MysqlConfig.java代码:

package com.ikeguang.paging.config;import org.hibernate.dialect.MySQL5Dialect;import org.springframework.stereotype.Component;/** * @ Author: keguang * @ Date: 2019/7/16 9:58 * @ version: v1.0.0 * @ description: 解决hibernate自动建表字符集为latin不能插入中文的问题。 */@Component@SuppressWarnings("deprecation")public class MysqlConfig extends MySQL5Dialect{    @Override    public String getTableTypeString() {        return "ENGINE=InnoDB DEFAULT CHARSET=utf8";    }}

Java

2. 实体类Model

package com.ikeguang.paging.model;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import java.io.Serializable;/** * @ Author: keguang * @ Date: 2019/6/24 20:18 * @ version: v1.0.0 * @ description: */@Entitypublic class User implements Serializable{    private static final long serialVersionUID = 1L;    @Id    @GeneratedValue    private Long id;    @Column(nullable = false, unique = true)    private String userName;    @Column(nullable = false)    private String passWord;    @Column(nullable = false, unique = true)    private String email;    @Column(nullable = true, unique = true)    private String nickName;    @Column(nullable = false)    private String regTime;    public User(){}    public User(String userName, String passWord, String email, String nickName, String regTime) {        this.userName = userName;        this.passWord = passWord;        this.email = email;        this.nickName = nickName;        this.regTime = regTime;    }    // 省略了必须的getter、setter方法}

Java

3. Jpa操作数据库

UserRepository.java代码

package com.ikeguang.paging.repository;import com.ikeguang.paging.model.User;import org.springframework.data.jpa.repository.JpaRepository;/** * @ Author: keguang * @ Date: 2019/7/18 10:23 * @ version: v1.0.0 * @ description: */public interface UserRepository extends JpaRepository{    User findById(long id);    void deleteById(long id);}

Java

4. service层

UserService代码

package com.ikeguang.paging.service;import com.ikeguang.paging.model.User;import org.springframework.data.domain.Page;/** * @ Author: keguang * @ Date: 2019/7/18 10:26 * @ version: v1.0.0 * @ description: */public interface UserService {    Page getUserList(int pageNum, int pageSize);    User findUserById(long id);    void save(User user);    void edit(User user);    void delete(long id);}

Java

service实现层

UserServiceImpl.java代码

package com.ikeguang.paging.service.impl;import com.ikeguang.paging.model.User;import com.ikeguang.paging.repository.UserRepository;import com.ikeguang.paging.service.UserService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.domain.Page;import org.springframework.data.domain.PageRequest;import org.springframework.data.domain.Pageable;import org.springframework.data.domain.Sort;import org.springframework.stereotype.Service;/** * @ Author: keguang * @ Date: 2019/7/18 10:27 * @ version: v1.0.0 * @ description: */@Servicepublic class UserServiceImpl implements UserService {    @Autowired    private UserRepository userRepository;    @Override    public Page getUserList(int pageNum, int pageSize) {        Sort sort = new Sort(Sort.Direction.DESC, "id");        Pageable pageable = PageRequest.of(pageNum, pageSize, sort);        Page users = userRepository.findAll(pageable);        return users;    }    @Override    public User findUserById(long id) {        return userRepository.findById(id);    }    @Override    public void save(User user) {        userRepository.save(user);    }    @Override    public void edit(User user) {        userRepository.save(user);    }    @Override    public void delete(long id) {        userRepository.deleteById(id);    }}

Java

5. Controller层
UserController .java代码

package com.ikeguang.paging.web;import com.ikeguang.paging.model.User;import com.ikeguang.paging.service.UserService;import org.springframework.data.domain.Page;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import javax.annotation.Resource;import java.util.Iterator;/** * @ Author: keguang * @ Date: 2019/7/18 10:29 * @ version: v1.0.0 * @ description: */@Controllerpublic class UserController {    @Resource    UserService userService;    @RequestMapping("/")    public String index() {        return "redirect:/list";    }    @RequestMapping("/list")    public String list(Model model, @RequestParam(value = "pageNum", defaultValue = "0") int pageNum, @RequestParam(value = "pageSize", defaultValue = "2") int pageSize) {        System.out.println("============================");        Page users=userService.getUserList(pageNum, pageSize);        System.out.println("总页数" + users.getTotalPages());        System.out.println("当前页是:" + pageNum);        System.out.println("分页数据:");        Iterator u = users.iterator();        while (u.hasNext()){            System.out.println(u.next().toString());        }        model.addAttribute("users", users);        return "user/list";    }    @RequestMapping("/toAdd")    public String toAdd() {        return "user/userAdd";    }    @RequestMapping("/add")    public String add(User user) {        userService.save(user);        return "redirect:/list";    }    @RequestMapping("/toEdit")    public String toEdit(Model model,Long id) {        User user=userService.findUserById(id);        model.addAttribute("user", user);        return "user/userEdit";    }    @RequestMapping("/edit")    public String edit(User user) {        userService.edit(user);        return "redirect:/list";    }    @RequestMapping("/delete")    public String delete(Long id) {        userService.delete(id);        return "redirect:/list";    }}

Java

application.properties配置文件

主要配制了mysql数据源,数据库驱动com.mysql.cj.jdbc.Driver,对于mysql-connector-java用的6.0以上的,如果用com.mysql.jdbc.Driver,就会报错。

。。。。。。。。。。。。。

作者:柯广

篇幅有限更多请见扩展链接:http://www.mark-to-win.com/tutorial/52239.html

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章