MyBatis-Plus3 分页 注解方式
官网例子
selectPage :https://mp.baomidou.com/guide/crud-interface.html#selectpage
/**
* <p>
* 根据 entity 条件,查询全部记录(并翻页)
* </p>
*
* @param page 分页查询条件(可以为 RowBounds.DEFAULT)
* @param queryWrapper 实体对象封装操作类(可以为 null)
* @return 实体分页对象
*/
IPage<T> selectPage(IPage<T> page, @Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
第一种方法,根据官方给的例子配置:
1.先给MybatisPlusConfig添加
package com.duboo.provider.dubboprovider.config;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
@MapperScan("com.duboo.provider.dubboprovider.mapper")
public class MybatisPlusConfig {
/**
* 分页插件
*/
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
}
2.service层
selectPage是继承了mapper,直接调用
pageNo是设置第几页
pageSize是每页显示
package com.duboo.provider.dubboprovider.service.movie;
import com.alibaba.dubbo.config.annotation.Service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dubbo.api.dubboapi.entiy.movie.Movie;
import com.dubbo.api.dubboapi.service.movie.MovieService;
import com.duboo.provider.dubboprovider.mapper.movie.MovieMapper;
import javax.annotation.Resource;
import java.util.List;
/**
* 描述:
* Date: 2019/7/11
*/
@Service
public class MovieServiceImpl implements MovieService {
@Resource
private MovieMapper movieMapper;
@Override
public IPage<Movie> searchMovie(String name, int pageNo, int pageSize) {
Page<Movie> page = new Page<>(pageNo,pageSize);
return movieMapper.selectPage(page,new QueryWrapper<Movie>().eq("name", name));
}
}
@test
@Test
public void test()
{
IPage page= movieService.searchMovie("我不是药神",1,5);
Gson gson = new Gson();
System.out.println(gson.toJson(page));
}
第二种方法,自己注释写SQL
1.先给MybatisPlusConfig添加
package com.duboo.provider.dubboprovider.config;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
@MapperScan("com.duboo.provider.dubboprovider.mapper")
public class MybatisPlusConfig {
/**
* 分页插件
*/
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
}
2.service层
selectPage是继承了mapper,直接调用
pageNo是设置第几页
pageSize是每页显示
package com.duboo.provider.dubboprovider.service.movie;
import com.alibaba.dubbo.config.annotation.Service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dubbo.api.dubboapi.entiy.movie.Movie;
import com.dubbo.api.dubboapi.service.movie.MovieService;
import com.duboo.provider.dubboprovider.mapper.movie.MovieMapper;
import javax.annotation.Resource;
import java.util.List;
/**
* 描述:
* Date: 2019/7/11
*/
@Service
public class MovieServiceImpl implements MovieService {
@Resource
private MovieMapper movieMapper;
@Override
public IPage<Movie> searchMovie(String name, int pageNo, int pageSize) {
Page<Movie> page = new Page<>(pageNo,pageSize);
return movieMapper.selectMovieList(page,name);
}
}
3.MovieMapper
package com.duboo.provider.dubboprovider.mapper.movie;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dubbo.api.dubboapi.entiy.movie.Movie;
import org.apache.ibatis.annotations.Select;
/**
* 描述:
* Author: fuweirong 【wr.fu@vdyoo.com】
* Date: 2019/7/11
*/
public interface MovieMapper extends BaseMapper<Movie> {
/**
* 分页查询 条件是:like name,ordername
* @param page
* @param name
* @return
*/
@Select("select * from movie where CONCAT(`name`,`ordername`) LIKE CONCAT ('%', #{name},'%')")
IPage<Movie> selectMovieList(Page<Movie> page, String name);
}
@test
@Test
public void test()
{
IPage page= movieService.searchMovie("我不是药神",1,5);
Gson gson = new Gson();
System.out.println(gson.toJson(page));
}
查询结果
{
"records":[
{
"id":1,
"name":"我不是药神",
"code":"",
"year":2018
}
],
"total":1,
"size":5,
"current":1,
"orders":[
],
"optimizeCountSql":true,
"isSearchCount":true
}