SSM中实现分页与JUnit单元测试

效果

实现

前文关于SSM的整合配置

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/85052628

实现分页类

在com.badao.util下新建Page.java用于存放分页信息

package com.badao.util;

public class Page {
 int start =0;//开始位置
 int count = 5;//每页的个数
 int last =0;//最后一页的位置
 public int getStart() {
  return start;
 }
 public void setStart(int start) {
  this.start = start;
 }
 public int getCount() {
  return count;
 }
 public void setCount(int count) {
  this.count = count;
 }
 public int getLast() {
  return last;
 }
 public void setLast(int last) {
  this.last = last;
 }
 //通过总数total和每页的个数计算出最后一页的位置
 public void caculateLast(int total) {
        // 假设总数是50,是能够被5整除的,那么最后一页的开始就是45
        if (0 == total % count)
            last = total - count;
        // 假设总数是51,不能够被5整除的,那么最后一页的开始就是50
        else
            last = total - total % count;     
    }
}

修改mapper文件

打开com.badao.mapper下的UserMapper.xml

修改selectAllUser的select语句

 <select id="selectAllUser" resultType="User">
            select *from  user    <BR>           <iftest="start!=null and count!=null">
             limit #{start},#{count}
            </if>
 </select>

LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数。LIMIT 接受一个或两个数字参数。参数必须是一个整数常量。如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。初始记录行的偏移量是 0(而不是 1)。

新增查询记录数的select语句

 <select id="total" resultType="int">
         select count(*) from user
 </select> 

修改UserMapper.java

修改并新增方法

public List<User> selectAllUser(Page page);
public int total();

修改service

增加total用于获取所有

增加selectAllUser(Page page),根据分页来查询数据

package com.badao.service;

import java.util.List;

import com.badao.pojo.User;
import com.badao.util.Page;

public interface UserService {
 List<User> selectAllUser();
 List<User> selectAllUser(Page page);
 int total();

}

修改serviceImpl

实现上面新增的方法。

package com.badao.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.badao.mapper.UserMapper;
import com.badao.pojo.User;
import com.badao.service.UserService;
import com.badao.util.Page;
@Service
public class UserServiceImpl implements UserService {

 @Autowired
 UserMapper userMapper;
 public List<User> selectAllUser() {
  // TODO Auto-generated method stub
  return userMapper.selectAllUser();
 }
 @Override
 public List<User> selectAllUser(Page page) {
  // TODO Auto-generated method stub
  return userMapper.selectAllUser(page);
 }
 @Override
 public int total() {
  // TODO Auto-generated method stub
  return userMapper.total();
 }

}

修改Controller

package com.badao.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import com.badao.pojo.User;
import com.badao.service.UserService;
import com.badao.util.Page;



// 告诉spring mvc这是一个控制器类
@Controller
@RequestMapping("")
public class UserController {
 @Autowired
 UserService userService;

 @RequestMapping("listUser")
 public ModelAndView listUser(Page page){
  ModelAndView mav = new ModelAndView();
  //根据分页对象,进行查询获取查询对象集合
  List<User> cs= userService.selectAllUser(page);
  int total = userService.total();
  //根据总数,计算最后一页的信息
  page.caculateLast(total);
  
  // 放入转发参数
  mav.addObject("userList", cs);
  // 放入jsp路径
  mav.setViewName("listUser");
  return mav;
 }

}

修改listUser.jsp


<%
 pageContext.setAttribute("APP_PATH", request.getContextPath());
%>
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>查询所有用户</title>
</head>

<script type="text/javascript" src="${APP_PATH }/static/js/jquery-1.12.4.min.js"></script>
<link href="${APP_PATH }/static/bootstrap-3.3.7-dist/css/bootstrap.min.css" rel="stylesheet">
<script src="${APP_PATH }/static/bootstrap-3.3.7-dist/js/bootstrap.min.js"></script>
<body>
<table align='center' border='1' cellspacing='0' class="table table-bordered"
    <th >
        <td>id</td>
        <td>name</td>
        <td>age</td>
    </th>
    <c:forEach items="${userList}" var="u">
        <tr class="active">
            <td >${u.id}</td>
            <td>${u.name}</td>
            <td>${u.age}</td>
             
        </tr>
    </c:forEach>
</table>
<div style="text-align:center"><BR>       <ahref="?start= 0">首 页</a><BR>       <ahref="?start=${page.start-page.count}">上一页</a>< BR>       <ahref="?start=${page.start+page.count}">下一页</a><BR>       <ahref="?start=${page.last}">末  页</a>
</div>
  </body>
</html>

注意:

a标签的href属性为什么是直接加?

如果?前什么都没有,那他就再次访问对应当前地址栏所对应的方法并且拼接上后面的参数。

单元测试向数据库插入数据

com.badao.test包下新建InsertTest.java

package com.badao.test;

import java.util.List;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.annotation.Rollback;
import org.springframework.test.context.ContextConfiguration;
import com.badao.mapper.UserMapper;
import com.badao.pojo.User;
import com.badao.util.Page;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;//使用junit4时报错导这个包
@RunWith(SpringJUnit4ClassRunner.class)//使用junit4进行测试
@ContextConfiguration("classpath:applicationContext.xml")//加载配置文件
public class InsertTest {
 @Autowired//自动注入
 private UserMapper userMapper;
  @Test//标明是测试方法
  @Rollback(false)  //标明使用完此方法后事务不回滚,true时为回滚
  public void testAdd() {
         for (int i = 0; i < 100; i++) {
          User user = new User();
          user.setName("user"+i);
             userMapper.addUser(user);
         }
 
     }
     
     @Test
     public void testTotal() {
         int total = userMapper.total();
         System.out.println(total);
     }
 
     @Test
     public void testList() {
         Page p = new Page();
         p.setStart(2);
         p.setCount(3);
         List<User> cs=userMapper.selectAllUser(p);
         for (User c : cs) {
             System.out.println(c.getName());
         }
     }
}


 

具体参照:

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/85112004

源码下载

https://download.csdn.net/download/badao_liumang_qizhi/10863507

猜你喜欢

转载自blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/85113289