mybatis-plus 分页实现

mybatis-plus 分页

mybatisplus自带了分页支持,可以在自定义sql得查询结果中直接返回Page来接收分页查询结果。以下为示例

1 编写mybatis 得mapper中得查询,其中第一个参数Page不需要添加参数注解,返回类型没有实体接收也可以用Map。

/**
 * 系统日志
 */
@Mapper
public interface SysLogDao extends BaseMapper<SysLogEntity> {
	@Select("select * from sys_log where username ~ #{key} and create_date > #{startTime}")
	public IPage<SysLogEntity> list(Page<SysLogEntity> page , @Param("key") String key ,@Param("startTime") Date startTime);
}

2 调用方法示例。

@RunWith(SpringRunner.class)
@SpringBootTest
public class LogTest {

	@Autowired
	private SysLogDao logDao ;
	
	@Test
	public void testList() {
		
		String key = "admin" ;
          // 第1页
		int pageNum = 1 ;
          // 每页10条
		int pageSize = 10;
		
		Page<SysLogEntity> p = new Page<>(pageNum, pageSize); 
		Date start = DateUtils.addDateDays(new Date(), -2);
		// 分页查询
		IPage<SysLogEntity> page = logDao.list(p , key , start);
		
		System.out.println("##########################");
		
		System.out.println(JSON.toJSONString(page));
		System.out.println(page.getPages() + " , " + page.getTotal() + " , " + page.getRecords().size());
		
		System.out.println("##########################");
	}
}

3 打印结果如下(实际和在数据库查询 limit 10 offset 0 结果一致):

{
    "current":1,
    "orders":[],
    "pages":1,
    "records":[
        Object{...},
        Object{...},
        Object{...},
    ],
    "searchCount":true,
    "size":10,
    "total":8
}
## 1 , 8 , 8

你可能感兴趣的:(mybatis)