Eclipse搭建一个简单的SSM环境(五)

这个应该是最后一个,写一个分页。
思路还是差不多,加两个接口就好了

先看前端页面userList.jsp

1、页面

<%@page import="cn.hutool.db.Session"%>
<%@ page contentType="text/html;charset=UTF-8"%>
<%@ page import="java.io.*,java.util.*" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<html>
<head>
    <title>欢迎页面</title>
</head>
<body>
<h1>你好鸭!  ${name}</h1>
<h1>JSP 用户列表</h1>
<table border="1" width="100%">

<tr>
   <th>ID</th>
   <th>用户名</th>
   <th>个人签名</th>
</tr>
<c:forEach items="${users}" var="user" varStatus="id">
     	

<tr>
   <td>${user.id}</td>
   <td>${user.name}</td>
   <td>${user.perms}</td>
</tr>
     </c:forEach>
</table>
<a href="${pageContext.request.contextPath}/list?num=${num-5}&index=5">上一页</a>
<a href="${pageContext.request.contextPath}/list">首页</a>
<a href="${pageContext.request.contextPath}/list?num=${total-(total%5)}&index=5">末页</a>
<a href="${pageContext.request.contextPath}/list?num=${num+5}&index=5">下一页</a>
</body>
</html>

2、DAO层

这里加两个接口,一个是用来查询用户总数的接口,一个是分页查询用户的接口

public interface UserDao {
	//查询单个用户的接口
	User queryUser(@Param("name")String name,@Param("pwd")String pwd);
	
	//判断是否存在这个用户,存在返回1,不存在返回0
	Integer querUserByName(String name);
	
	Integer AddUser(@Param("name")String name,@Param("pwd")String pwd,@Param("perms")String perms);
	
	//查询多个用户
	List<User> listUser(@Param("num")Integer num, @Param("index") Integer index);

	//获取用户总数
	Integer userNums();
}

3、Service层

没什么好说的,是这样。

public interface UserService {
	User queryUser(String name,String pwd);
	Integer querUserByName(String name);
	Integer AddUser(String name,String pwd,String perms);
	List<User> listUser(Integer num,Integer index);	
	Integer userNums();
}

ServiceImpl

@Service
public class UserServiceImpl implements UserService{
	
	@Autowired
	private UserDao userDao;

	@Override
	public User queryUser(String name, String pwd) {
		// TODO Auto-generated method stub
		return userDao.queryUser(name, pwd);
	}

	@Override
	public Integer AddUser(String name, String pwd, String perms) {
		// TODO Auto-generated method stub
		return userDao.AddUser(name, pwd, perms);
	}

	@Override
	public Integer querUserByName(String name) {
		// TODO Auto-generated method stub
		return userDao.querUserByName(name);
	}

	@Override
	public List<User> listUser(Integer num, Integer index) {
		// TODO Auto-generated method stub
		return userDao.listUser(num, index);
	}

	@Override
	public Integer userNums() {
		// TODO Auto-generated method stub
		return userDao.userNums();
	}

}

4、Mapper映射文件

我这里就复制了,很简单

<?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">

<!-- 注意这里的namespace 不要写错了    -->
<mapper namespace="com.liliya.dao.UserDao">


    <!--查询单个-->
    <select id="queryUser" parameterType="string" resultType="User">
        select id,name,pwd,perms
        from mybatis.user
        where `name`=#{name} and `pwd`=#{pwd}
    </select>
    
    <!-- 判断用户是不是存在 如果存在的话就返回1,不存在的话就返回 0 -->
    <select id="querUserByName" resultType="int">
    	select count(1) from mybatis.user where `name`=#{name};
    </select>
  
    
   <insert id="AddUser">
  	insert into mybatis.user (name,pwd,perms)
  	values (#{name},#{pwd},#{perms})
	</insert>
	
	<!-- 第一个参数是  显示几条数据,第二个数据是从第几条开始 -->
	<select id="listUser" resultType="User">
		select id,name,perms 
		from mybatis.user
		limit #{num},#{index}
	</select>
	
	 <select id="userNums" resultType="int">
    	select count(*) from mybatis.user;
    </select>

</mapper>

5、Controller

分页的逻辑

	
@Controller
public class UserController {
	
	@Autowired
	private UserService userService;
	
    //登录
	@RequestMapping("/login")
	public String name(String username,String password,Model model) {
		User user = userService.queryUser(username, password);
		if (user!=null) {
			model.addAttribute("name", user.getName());
			return "forward:/list";
		}
		
		return "index";
	}
	
	//注册
	@RequestMapping("/register")
	public String register(String username,String password,String perms,Model model) {
		//如果用户不存在
		if (userService.querUserByName(username)==0) {
			userService.AddUser(username, password, perms);
			model.addAttribute("name", username);
			return "hello";
		}else {
			model.addAttribute("msg", "用户名已经存在了");
			return "register";
		}
	}
	
	//分页用户
	@RequestMapping("/list")
	public String listUser(@RequestParam(value = "num", required = false) Integer num,@RequestParam(value = "num",required = false) Integer index,Model model) {
		int total = userService.userNums();
		//默认是查看5条数据
		
		if (index == null || index <= 0) {
			index = 5;
		}
		
		if (num==null || num<= 0) {
			num = 0;
		}else if (num>total) {
			num = total-(total%5);
		}
		
	    List<User> list = userService.listUser(num, index);
	   
	    model.addAttribute("users", list);
	    model.addAttribute("total", userService.userNums());
	    model.addAttribute("num", num);
	    
		
		return "userList";
		
	}
}

那现在的目录结构就是这样的
在这里插入图片描述
启动项目

在这里插入图片描述

在这里插入图片描述
到这里分页就做好了。虽然很丑,但是基本上是没有问题了
如果你是抄我的,可以把这个删的,然后在自己做一遍看看,变成自己的东西。

©️2020 CSDN 皮肤主题: 1024 设计师:上身试试 返回首页