MyBatis usando RowBounds de paginação, muito conveniente, não há necessidade de limite de gravação na instrução SQL, SQL MyBatis costura automaticamente, acrescentando limite o núcleo é na camada de interface mapeador, quando a participação em massa RowBounds de entrada (int offset, limite int) objetos a paginação completa
offset: pagenum (p poucos, pode automaticamente ir para a página seguinte) (Se este parâmetro está configurado pageHelper ainda olhando apenas para o próximo registro)
limite: pageSize (cada página mostra o número de registos)
Nota: Uma vez que o máximo permitido java inteiro 2147483647, por isso limitar o inteiro máximo que pode ser utilizado é 2147483647, remova descartável grandes quantidades de dados pode causar um estouro de memória, então limite cautela utilizado no caso de grandes volumes de dados
Conclusão: RowBounds maior vantagem é poupar os melhores, sem limite de limite na declaração xml, mas remontado com PageHelper uso RowBounds objetos
1. A introdução de github relacionadas com pacote
<dependency> //spring导入这个
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>4.1.6</version>
</dependency>
<dependency> //springboot导入这个
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.3</version>
</dependency>
2. application.yml colocado
pagehelper:
helperDialect: mysql //自动检测当前的数据库链接,自动选择合适的分页方式 也即说明方言为mysql
reasonable: true //对页码小于0的时候有帮助
page-size-zero: true //当页码为0的时会查找所有记录
supportMethodsArguments: true
params: count=countSql
offset-as-page-num: true //将offset作为pagenum 即实现了自动翻页
3. Importante
método PageHelper.startPage Importante
única imediatamente após o primeiro método PageHelper.startPage método (Select) MyBatis inquérito será paginado .
Não configure a pluralidade de plug-in guias
não configurar a pluralidade de plug-in sistemas de paginação (usando Spring, MyBatis-config.xml e configuração Spring, selecionar um, não simultaneamente uma pluralidade de plug-in tabs)!
Paginação plug-in não suporta paginação para instrução de atualização com
respeito à atualização sql com excepção, para tais recomendações sql página do manual lances em tempo de execução, depois de todo esse sql precisa de atenção.
plug-in de paginação não suporta mapeamentos resultado aninhadas
devido aos resultados de uma abordagem aninhada levará ao conjunto de resultados é recolhido, para que a página de resultados da consulta depois de dobrar o número total será reduzido, não pode garantir o número correto de resultados paginados.
4. A execução de código
1. Ordenar consulta não usa pagehelper
List<Route> routeList = routeMapper.findByPage(5, "%北京%", 0, 5);
instrução SQL (uso do limite) e o mapeador de definição de método
@Select("select * from tab_route where cid = #{param1} AND rname LIKE #{param4} LIMIT #{param2} ,#{param3} ")
public List<Route> findByPage(int cid, int start, int pageSize, String rname);
2. Use chamada pagehelper caminho com rowbound
List<Route> routeList = routeMapper.findByPage(5, "%北京%", new RowBounds(0, 5));
instrução SQL e definição de método mapeador
@Select("select * from tab_route where cid = #{param1} AND rname LIKE #{param2} ")
public List<Route> findByPage(int cid, String rname, RowBounds rowBounds);
Resultados rowBounds (0,5) e quando rowBounds (2,5), como disse anteriormente tempo
se o application.yml dispostos compensar-as-page-num = verdadeiro automaticamente aleta
Figura 1. rowBounds (0,5)
A Fig. 2
acima são rowBounds (2,5) pode ser visto a partir deste é o registo da base de dados 6 e, mais tarde, é a segunda principal (pois o conteúdo da página e página 1 0 são os mesmos, como mostrado antes de gravar cinco)
- O método empregado PageHelper PageHelper.startPage paginação consulta classe pode paginação ()
que é seguido pelo primeiro método será paginado select (select não necessariamente tem que começar no início do widget pode encontrar automaticamente determina se a operação é uma consulta)
//分页查询采用PageHelper 能分页 /紧跟着的第一个select方法会被分页
PageHelper.startPage(2, 5);
List<Route> routeList = routeMapper.selectByPage(5, "%北京%");//考察是不是只有select开头的方法才可以 其实并不是
instrução SQL e definição de método mapeador
@Select("select * from tab_route where cid = #{param1} AND rname LIKE #{param2} ")
List<Route> selectByPage(int cid, String rname);
Como resultado FIGS Túlio
- Paginação parâmetros de consulta utilizando a chamada de método
List<Route> routeList = routeMapper.findByPage(5, "%北京%", 0, 5);
instrução SQL e definição de método mapeador
//参数方法的方式调用
@Select("select * from tab_route where cid = #{param1} AND rname LIKE #{param2} ")
public List<Route> findByPage(
@Param("cid") int cid,
@Param("rname") String rname,
@Param("pageNum") int pageNum,
@Param("pageSize") int pageSize
);
Como resultado FIGS Túlio
Além disso, note que:
Não configurado
compensar-como-página-NUM:
verdadeiro como
rowBounds consulta (0,5) e (2,5) rowBounds quando
Ou usando
PageHelper.offsetPage ();
O
PageHelper.offsetPage consulta (0, 5) e PageHelper.offsetPage (2, 5)
que, quando a consulta não automaticamente, mas apenas olhando guia para baixo poucos registros 2
Figura 3. rowBounds (0,5)
Figura 4. rowBounds (2,5) comparação pode ver claramente Fig. 2, mas não apenas para descobrir a dois guia gravação para baixo
Erro:
vai reclamar Estilo rowbound existem métodos e parâmetros de métodos
de métodos rowbound determinação e parâmetros método opção com um método em que uma chamada pode ser seleccionado a partir de dois
Referência:
Importante
MyBatis usando diferença pagehelper-spring-boot-starter eo pagehelper