代码实现
在第二篇的基础上多了
分页类
package com.zhongruan.bean;
import java.util.List;
// 分页类
public class PageInfo<T> {
// 当前页需要展示的数据
private List<T> list;
private int totalPage; // 总页数
private int totalCount; // 总记录数
private int size; // 每页数据量
private int currentPage; // 当前页数
public PageInfo() {
}
public PageInfo(List<T> list, int totalPage, int totalCount, int size, int currentPage) {
this.list = list;
this.totalPage = totalPage;
this.totalCount = totalCount;
this.size = size;
this.currentPage = currentPage;
}
public List<T> getList() {
return list;
}
public void setList(List<T> list) {
this.list = list;
}
public int getTotalPage() {
return totalPage;
}
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
public int getTotalCount() {
return totalCount;
}
public void setTotalCount(int totalCount) {
this.totalCount = totalCount;
}
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
public int getCurrentPage() {
return currentPage;
}
public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
}
@Override
public String toString() {
return "PageInfo{" +
"list=" + list +
", totalPage=" + totalPage +
", totalCount=" + totalCount +
", size=" + size +
", currentPage=" + currentPage +
'}';
}
}
增加了USERhander的功能
package com.zhongruan.controller;
import com.zhongruan.bean.PageInfo;
import com.zhongruan.bean.User;
import com.zhongruan.dao.UserDao;
import com.zhongruan.service.UserService;
import com.zhongruan.service.impl.UserServiceImpl;
import javafx.beans.DefaultProperty;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
import sun.security.util.Password;
@Controller
@RequestMapping("/user")
public class UserHandler {
// @Controller 表示UserHandler类 是一个控制器类(处理请求)
@Autowired
UserDao userDao;
@Autowired
UserService userService;
@RequestMapping("/findAll")
public ModelAndView index() {
System.out.println("index方法执行 ");
ModelAndView mv = new ModelAndView();
mv.addObject("list", userDao.findAll());
mv.setViewName("list");
return mv;
// ModelAndView 数据视图
// return "index";
}
@RequestMapping("/findAll01")
public ModelAndView index01() {
ModelAndView mv = new ModelAndView();
mv.addObject("list", userService.findAll());
mv.setViewName("list");
return mv;
}
@RequestMapping("/login")
public String login(String username, String password) {
System.out.println(username + "====" + password);
// 对 用户名和密码 进行 校验
User user = userService.login(new User(username, password));
System.out.println(user);
if (user == null) {
System.out.println("登录失败");
return "pages/failer";
} else {
System.out.println("登录成功");
return "pages/success";
}
}
// 7.23
// 未分页
@RequestMapping("/findAll02")
public ModelAndView findAll() {
ModelAndView mv = new ModelAndView();
// 指定视图
mv.setViewName("pages/dataList");
// 指定数据
mv.addObject("list", userService.findAll());
return mv;
}
// 删除
@RequestMapping("/delete")
public String delete(int id) {
userService.deleteById(id);
// redirect 重定向
return "redirect:/user/findAll02";
}
// 更新的前置操作 想要讲数据单独展示到页面上
@RequestMapping("/toUpdate")
public ModelAndView toUpdate(int id) {
User user = userService.findById(id);
ModelAndView mv = new ModelAndView();
mv.addObject("user", user);
mv.setViewName("pages/user-update");
return mv;
}
// 更新操作
@RequestMapping("/update")
public String update(User user) {
int flag = userService.update(user);
System.out.println(flag);
return "redirect:findAll02";
}
// 分页 1页 5条 currentPage当前页数
@RequestMapping("/findAll03")
public ModelAndView findAllByPage(@RequestParam(defaultValue = "1") int currentPage) {
ModelAndView mv = new ModelAndView();
PageInfo<User> pageInfo = userService.findByPage(currentPage);
System.out.println(pageInfo);
// 将数据返回到页面上
mv.setViewName("pages/dataList");
mv.addObject("pageInfo", pageInfo);
return mv;
}
}
相应完善dao类
package com.zhongruan.dao;
import com.zhongruan.bean.User;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface UserDao {
// 查询全部用户 的方法
List<User> findAll();
// List集合的接口 <User> 泛型就是 将运行期间的错误 转换到 编译期间 User.login() Student.login()
User checkUser(User user);
void deleteById(int id);
User findById(int id);
int update(User user);
int getTotal();
List<User> findAllByPage(@Param("start") int start, @Param("size") int size);
}
和其XML
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zhongruan.dao.UserDao">
<!-- resultType 方法返回值的类型 -->
<select id="findAll" resultType="User">
select * from t_user
</select>
<select id="checkUser" parameterType="User" resultType="User">
select * from t_user where username=#{username} and password = #{password};
</select>
<insert id="save" parameterType="User"></insert>
<delete id="deleteById" parameterType="int">
delete from t_user where id = #{id}
</delete>
<select id="findById" parameterType="int" resultType="User">
select * from t_user where id = #{id}
</select>
<update id="update" parameterType="User">
update t_user set username = #{username}, password = #{password}, age = #{age} where id = #{id}
</update>
<select id="getTotal" resultType="int">
select count(*) from t_user
</select>
<select id="findAllByPage" parameterType="int" resultType="User">
select * from t_user limit #{start}, #{size}
</select>
</mapper>
serverimpl类中添加
@Override
public PageInfo<User> findByPage(int currentPage) {
PageInfo<User> pageInfo = new PageInfo<>();
// 指定每页的数据量
pageInfo.setSize(5);
// 指定总数据量
int totalCount = userDao.getTotal();
pageInfo.setTotalCount(totalCount);
// 指定总页数 ceil() 向上取整 floor() 向下取整 round() 四舍五入
int totalPage = (int) Math.ceil(totalCount / (double)pageInfo.getSize());
pageInfo.setTotalPage(totalPage);
// 判断当前页是否合理
if (currentPage < 1) {
pageInfo.setCurrentPage(1);
} else if (currentPage > totalPage) {
pageInfo.setCurrentPage(totalPage);
} else {
pageInfo.setCurrentPage(currentPage);
}
// 指定当前页的数据 指定sql语句中的两个参数
int start = (pageInfo.getCurrentPage() - 1) * pageInfo.getSize();
List<User> list = userDao.findAllByPage(start, pageInfo.getSize());
pageInfo.setList(list);
return pageInfo;
server类的更改
public interface UserService {
List<User> findAll();
User login(User user);
void deleteById(int id);
User findById(int id);
int update(User user);
PageInfo<User> findByPage(int currentPage);
// A code block
var foo = 'bar';
// A code block
var foo = 'bar';
// A code block
var foo = 'bar';
jsp不给大伙看了,从AdminLTE套用的模板,有兴趣的可以去了解一下
结果
如图所示分页成功