SpringBoot结合Thymeleaf实现分页,很方便。
项目结构
由于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
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
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
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
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
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
主要配制了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 条评论) “” |