A paginação é uma função comumente usada em projetos da Web Java. Ontem, as operações simples de paginação e a paginação de pesquisa foram implementadas no Spring MVC. Vamos gravar aqui. A estrutura usada é (mybatis+springmvc+mola).
Primeiro, precisamos de uma aula de ferramentas paginadas:
1. Paginação
importar java.io.serializable; / *** Paginação*/ página pública Página implementa serializável {private estático final serialversionuid = -3198048449643774660l; private int pagEnow = 1; // Número da página atual private int pageSize = 4; // Número de registros exibidos em cada página Private int TotalCount; // número total de registros privados int totalpageCount; // Número total de páginas @suppresswarnings ("não utilizadas") private int startpos; // Iniciar a posição, comece a partir de 0 @suppresswarnings ("não utilizados") Private Boolean Hasfirst; // Existe uma página inicial @suppresswarnings ("não utilizada") Private boolean haspre; // existe uma página anterior @supresswarnings ("UNUSUSED), que não se deve a uma página"). Haslast; // Existe uma última página/ ** * Passe o número total de registros e a página atual através do construtor * @param totalCount * @param pagEnow */ public página (int totalCount, int pageNow) {this.totalCount = totalCount; this.pagenow = pagenow; } / *** Obtenha o número total de páginas, número total de páginas = Registros totais / número total de páginas* @return* / public int getTotalPageCount () {totalpageCount = getTotalCount () / getPagesize (); return (totalCount % Pagesize == 0)? TOTALPAGECOUNT: TOTALPAGECOUNT + 1; } public void STETTALPAGECOUNT (int totalpageCount) {this.TotalPageCount = totalpageCount; } public int getPagENow () {return pagEnow; } public void setPagENOW (int pageNow) {this.pageNow = pageNow; } public int getPagesize () {return pagageSize; } public void setPagesize (int PAGESIZE) {this.pagesize = Pagesize; } public int getTotalCount () {return totalCount; } public void SettaltalCount (int totalCount) {this.totalCount = totalCount; } / ** * Obtenha a posição inicial do registro de seleção * @return * / public int getStartPos () {return (pagEnow - 1) * PageSize; } public void setStartPos (int startPos) {this.startPos = startPos; } / *** É a primeira página* @return* / public boolean ishasfirst () {return (pagEnow == 1)? Falso: Verdadeiro; } public void Sethasfirst (boolean hasfirst) {this.hasfirst = hasfirst; } / *** Existe uma página inicial* @return* / public boolean ishaspre () {// Se houver uma página inicial, existe a página anterior, porque existe uma página inicial, não é a primeira página. retornar ishasfirst ()? Verdadeiro: falso; } public void sechaspre (boolean haspre) {this.haspre = haspre; } / *** Existe uma próxima página* @return* / public boolean ishasnext () {// Se houver uma última página, existe a próxima página, porque existe uma última página, não é a última página. retornar ishaslast ()? Verdadeiro: falso; } public void sethasnext (boolean hasNext) {this.hasnext = hasNext; } / *** Existe uma última página* @return* / public boolean ishaslast () {// Se não for a última página, haverá um retorno de última página (pagenow == GetTotalCount ())? Falso: Verdadeiro; } public void setaslast (boolean haslast) {this.haslast = haslast; }}Com esta classe de ferramenta, primeiro escreva a instrução SQL no arquivo de configuração xxxxmapper.xml de mybatis, como segue:
<!-declaração de paginação sql-> <select id = "selectProductSbypage" resultMap = "Return Value Type"> Selecione * do nome da tabela onde user_id = #{userID, jdbctype = integer} limite #{startPos}, #{Pagesize} </select> <! Selecione contagem (*) no nome da tabela onde user_id = #{userID, jdbctype = integer} </leclect>Aqui podemos ver que os dois <Seclect> precisam passar no parâmetro 3 e 1, respectivamente. No momento, escreva uma interface no arquivo DAO correspondente ixxxxdao para escrever o método correspondente. O nome do método é o mesmo que o valor do atributo de identificação no mapper.xml:
/ ** * Passe vários parâmetros usando o método de anotação, paginação do produto do usuário, consulta fazendo login na identificação do usuário * @param página * @param userID * @return startPos},#{paGagesize} */ public list <Products> selectProductSbypage (@param (value = "startpos") interigers stargerpos, PageSize,@param (value = "userId") Inteiro UserID); / ** * Obtenha informações e consultas de quantidade do produto, login na identificação do usuário * @param userID * @return */ public Long getProductScount (@param (value = "userID") integere userID);Após a conclusão da definição da interface, você precisa escrever a interface de negócios correspondente e o método de implementação, definir esse método na interface e substituí -lo na classe de implementação:
/ ** * Produto de exibição da página * @param request * @param modelo * @param LoginUserID */ void ShowProductSbypage (solicitação httpServletRequest, modelo de modelo, int loginUserID);
O próximo método para implementar a classe é chamar a camada DAO e aceitar os parâmetros passados pelo controlador para executar o processamento da lógica de negócios. A solicitação é usada para obter os parâmetros passados pelo front-end e o modelo é usado para retornar os resultados do processamento à página JSP.
@Override public void SmohShIptRoductSbypage (solicitação httpServletRequest, modelo de modelo, int loginUserID) {string pagEnow = request.getParameter ("Pagenow"); Página página = nulo; Lista <PROTDWITHBLOBS> Products = new ArrayList <PructWithBlobs> (); int totalCount = (int) productDao.getProductScount (LoginUserID); if (pagEnow! = null) {página = new Page (totalCount, Integer.parseint (pagenow)); allProducts = this.productDao.SelectProductSbypage (Page.getStartPos (), Page.getPagesize (), LoginUserID); } else {página = nova página (totalCount, 1); allProducts = this.productDao.SelectProductSbypage (Page.getStartPos (), Page.getPagesize (), LoginUserID); } model.addattribute ("produtos", produtos); model.addattribute ("página", página); }Em seguida, é a redação do controlador. Quando o usuário precisa pular para a página desse produto real, ele precisa passar pelo método correspondente no controlador. Esse processo de processamento é chamar o método da camada de negócios para concluir e, em seguida, retornar o resultado à tela dinâmica do JSP. O servidor gera a página e a passa para o cliente (navegador) para realidade. Este é um processo MVC.
/ ** * Inicialize a página JSP da lista "Meus Produtos", com função de paginação * * @param request * @param modelo * @return */ @requestMapping (value = "mapa caminho", método = requestMethod.get) public String ShowMyProduct (httPServletLereTrequest, modelo) {// Obtenha o LoginUser no LoginUrgin (httpSertLeTrequest Solicy, modelo) request.getSession (). getAttribute ("LoginUser"); // Determine se a sessão é inválida se (loginUser == null || "" .equals (loginUser)) {return "redirect:/"; } int loginUserID = LoginUser.getUserId (); // O ProductService aqui é um objeto da interface injetada do iProductService this.ProductService.ShowProductSbypage (solicitação, modelo, LoginUserID); retornar "JSP Path to Pump"; }Não vou escrever a parte de aceitação da página JSP. Todo mundo é o mesmo, ou seja, eles combinam JSTL e EL para escrever. (Também fiz um julgamento ao fazer o loop. Se os parâmetros aceitos estiverem vazios, não haverá produto para a saída. Somente quando os parâmetros aceitos não estiverem vazios, a saída será lançada.
<!-Função de paginação Iniciar-> <div align = "Center"> <font size = "2"> Total $ {Page.TotalPageCount} Page </font> <font size = "2"> página $ {página.PagEnow = Rel "Reln"/Reln "/Rell "/nOft) </font> </href =" myProductpage? Pagenow = 1 " <c: escolha> <c: quando test = "$ {page.pagenow - 1> 0}"> <a href = "myProductPage? pageNow = $ {Page.pagenow - 1}" rel = "Nofollow"> página anterior </a> </c: Quando> <c: quando test = "0, {{Page.pagen> href = "myProductPage? pageNow = 1" rel = "Nofollow externo" rel = "Nofollow externo"> página anterior </a> </c: when> </c: escolha> <c: escolha> <c: when test = "$ {Page.totalPagEcount == 0}"> <a} Não siga "Rel =" Nofollow externo "> Próxima página </a> </c: quando> <c: quando test =" $ {page.pagenow + 1 <página.totalpageCount} "> <a href =" myProductPage? test = "$ {Page.pagenow + 1> = Page.TotalPageCount}"> <a href = "myProductPage? Pagenow = $ {Page.TotalPageCount}" Rel = "Nofollow" Rel = "Nof siga externo"> Próxima página </a> </c: quando> test = "$ {Page.TotalPageCount == 0}"> <a href = "myProductPage? Pagenow = $ {Page.pagenow}" rel = "Nofollow externo" rel = "Nofollow"> última página </a> href = "myProductPage? PagEnow = $ {Page.TotalPageCount}" rel = "Nofollow externo" rel = "Nofollow externo"> Última página </a> </c: caso contrário,2. Pagagem de consulta
Em relação à paginação de consultas, o processo é aproximadamente o mesmo, exceto que o terceiro parâmetro (o acima é LoginUserID) precisa aceitar os parâmetros de entrada do usuário. Dessa forma, precisamos aceitar o parâmetro de entrada do usuário no controlador (o <input> na página é passado no método get) e, em seguida, adicione -o à sessão para concluir a paginação de consulta (aqui, devido ao hiperlink "A seguir, o código não foi encontrado ainda não foi usado para lidar com a paginação e a paginação. pode retirá -lo separadamente e carregá -lo com uma tag <cubs> na página JSP necessária, para que o código possa ser evitado):
Aqui está o código para o controlador como referência:
/ ** * Consulta o produto por nome do produto * @param request * @param modelo * @return */ @ReQuestMapping (valor = "endereço do mapa", método = requestMethod.get) public string searchForProducts (httpServletRequest Solicy, modelo modelo) {httpSession Session = request.getSession (); String param = request.getParameter ("param"); String condition = (string) session.getAttribute ("condição"); // primeiro determina se a condição na sessão está vazia se (condição == null) {condition = new String (); session.setAttribute ("condição", condição); // Se a condição na sessão estiver vazia, determine se o parâmetro passado está vazio. Se estiver vazio, pule para a página de resultado da pesquisa se (param == null || "" .equals (param)) {return "private/space/productsearchResult"; }} // Se a sessão não estiver vazia e o parâmetro de condição de pesquisa de entrada não estiver vazio, atribua param a condição se (param! = Null &&! ("". Equals (param))) {condition = param; session.setAttribute ("condição", condição); } // Use o valor do atributo de condição na sessão como a condição de consulta this.productService.showsearchedProductSbypage (solicitação, modelo, condição); retornar "página saltada"; }O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.