package com.baomidou.mybatisplus.test.plugins.paginationInterceptor;
import java.io.Reader;
import java.sql.Connection;
import java.util.List;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.jdbc.ScriptRunner;
import org.apache.ibatis.session.RowBounds;
import org.apache.ibatis.session.SqlSession;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.test.plugins.RandomUtils;
import com.baomidou.mybatisplus.test.plugins.paginationInterceptor.entity.PageUser;
import com.baomidou.mybatisplus.test.plugins.paginationInterceptor.mapper.PageUserMapper;
import com.baomidou.mybatisplus.test.plugins.paginationInterceptor.service.PageUserService;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "/plugins/paginationInterceptor.xml" })
public class PaginationInterceptorTest {
@Autowired
private SqlSessionTemplate sqlSessionTemplate;
@Autowired
private PageUserService pageUserService;
@Autowired
private PageUserMapper pageUserMapper;
private int current;
private int size;
@Before
public void setUp() throws Exception {
SqlSession session = sqlSessionTemplate.getSqlSessionFactory().openSession();
Connection conn = session.getConnection();
Reader reader = Resources.getResourceAsReader("com/baomidou/mybatisplus/test/plugins/paginationInterceptor/CreateDB.sql");
ScriptRunner runner = new ScriptRunner(conn);
runner.setLogWriter(null);
runner.runScript(reader);
reader.close();
session.close();
// 随机当前页和分页大小
size = RandomUtils.nextInt(1, 50);
current = RandomUtils.nextInt(1, 200 / size);
System.err.println("当前页为:" + current + " 分页大小为" + size);
}
@Test
public void pageSimpleTest() {
// 最基础分页
Page<PageUser> page1 = new Page<>(current, size);
Page<PageUser> result1 = pageUserService.selectPage(page1);
Assert.assertTrue(!result1.getRecords().isEmpty());
}
@Test
public void pageOrderByTest() {
// 带OrderBy
Page<PageUser> page2 = new Page<>(current, size, "name");
Page<PageUser> result2 = pageUserService.selectPage(page2);
Assert.assertTrue(!result2.getRecords().isEmpty());
// 没有orderby但是设置了倒叙
Page<PageUser> page3 = new Page<>(current, size);
page3.setAsc(false);
Page<PageUser> result3 = pageUserService.selectPage(page3);
Assert.assertTrue(!result3.getRecords().isEmpty());
// 有orderby设置了倒叙
Page<PageUser> page4 = new Page<>(current, size, "name");
page3.setAsc(false);
Page<PageUser> result4 = pageUserService.selectPage(page4);
Assert.assertTrue(!result4.getRecords().isEmpty());
}
@Test
public void pageCountTest() {
// 设置不count
Page<PageUser> page = new Page<>(current, size);
page.setSearchCount(false);
Page<PageUser> result = pageUserService.selectPage(page);
Assert.assertTrue(result.getTotal() == 0);
}
@Test
public void rowBoundTest() {
System.err.println("测试原生RowBounds分页");
int offset = RandomUtils.nextInt(1, 190);
int limit = RandomUtils.nextInt(1,20);
RowBounds rowBounds = new RowBounds(offset, limit);
List<PageUser> result = pageUserMapper.selectPage(rowBounds, null);
Assert.assertTrue(!result.isEmpty());
}
}