Mybatis分页查询及特殊字符的处理

一. Mybatis分页查询

分页是我们在开发中绕不过去的一个坎!当你的数据量大了的时候,一次性将所有数据查出来不现实,所以我们一般都是分页查询的,减轻服务端的压力,提升了速度和效率!也减轻了前端渲染的压力!
传统的limit语句实现分页太过繁琐,这里使用一个Mybatis_PageHelper分页插件来完成分页查询的实现。

官方GitHub地址:

https://github.com/pagehelper/Mybatis-PageHelpericon-default.png?t=N6B9https://github.com/pagehelper/Mybatis-PageHelper

 1. 导入pom依赖

        
            com.github.pagehelper
            pagehelper
            5.1.2
        

2. Mybatis核心文件配置拦截器

这里由于DTD约束,plugins标签需要放在environments标签之前。

    
        
        
        
    

3.添加PageBean工具类

package com.xissl.util;

import java.io.Serializable;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

public class PageBean implements Serializable {

	private static final long serialVersionUID = 2422581023658455731L;

	//页码
	private int page=1;
	//每页显示记录数
	private int rows=10;
	//总记录数
	private int total=0;
	//是否分页
	private boolean isPagination=true;
	//上一次的请求路径
	private String url;
	//获取所有的请求参数
	private Map map;
	
	public PageBean() {
		super();
	}
	
	//设置请求参数
	public void setRequest(HttpServletRequest req) {
		String page=req.getParameter("page");
		String rows=req.getParameter("rows");
		String pagination=req.getParameter("pagination");
		this.setPage(page);
		this.setRows(rows);
		this.setPagination(pagination);
		this.url=req.getContextPath()+req.getServletPath();
		this.map=req.getParameterMap();
	}
	public String getUrl() {
		return url;
	}

	public void setUrl(String url) {
		this.url = url;
	}

	public Map getMap() {
		return map;
	}

	public void setMap(Map map) {
		this.map = map;
	}

	public int getPage() {
		return page;
	}

	public void setPage(int page) {
		this.page = page;
	}
	
	public void setPage(String page) {
		if(null!=page&&!"".equals(page.trim()))
			this.page = Integer.parseInt(page);
	}

	public int getRows() {
		return rows;
	}

	public void setRows(int rows) {
		this.rows = rows;
	}
	
	public void setRows(String rows) {
		if(null!=rows&&!"".equals(rows.trim()))
			this.rows = Integer.parseInt(rows);
	}

	public int getTotal() {
		return total;
	}

	public void setTotal(int total) {
		this.total = total;
	}
	
	public void setTotal(String total) {
		this.total = Integer.parseInt(total);
	}

	public boolean isPagination() {
		return isPagination;
	}
	
	public void setPagination(boolean isPagination) {
		this.isPagination = isPagination;
	}
	
	public void setPagination(String isPagination) {
		if(null!=isPagination&&!"".equals(isPagination.trim()))
			this.isPagination = Boolean.parseBoolean(isPagination);
	}
	
	/**
	 * 获取分页起始标记位置
	 * @return
	 */
	public int getStartIndex() {
		//(当前页码-1)*显示记录数
		return (this.getPage()-1)*this.rows;
	}
	
	/**
	 * 末页
	 * @return
	 */
	public int getMaxPage() {
		int totalpage=this.total/this.rows;
		if(this.total%this.rows!=0)
			totalpage++;
		return totalpage;
	}
	
	/**
	 * 下一页
	 * @return
	 */
	public int getNextPage() {
		int nextPage=this.page+1;
		if(this.page>=this.getMaxPage())
			nextPage=this.getMaxPage();
		return nextPage;
	}
	
	/**
	 * 上一页
	 * @return
	 */
	public int getPreivousPage() {
		int previousPage=this.page-1;
		if(previousPage<1)
			previousPage=1;
		return previousPage;
	}

	@Override
	public String toString() {
		return "PageBean [page=" + page + ", rows=" + rows + ", total=" + total + ", isPagination=" + isPagination
				+ "]";
	}
}

4. 案例实现

Mapper.xml

  

Mapper层

    List selectLike04(@Param("bname") String bname);

Service层

    List selectLike04(String bname, PageBean pageBean);
    @Override
    public List selectLike04(String bname, PageBean pageBean) {
        if(pageBean !=null && pageBean.isPagination()){
            PageHelper.startPage(pageBean.getPage(),pageBean.getRows());
        }
        List books = bookMapper.selectLike04(bname);
        if(pageBean !=null && pageBean.isPagination()){
            PageInfo info = new PageInfo<>(books);
            System.out.println("页码:" + info.getPageNum());
            System.out.println("页大小:" + info.getPageSize());
            System.out.println("总记录:" + info.getTotal());
            pageBean.setTotal(info.getTotal()+"");
        }
        return books;
    }

测试结果:

Mybatis分页查询及特殊字符的处理_第1张图片

 

二. Mybatis特殊字符处理

2.1 用转义字符替换特殊字符

特殊字符 转义字符
< <
> >
& &
' '
" "

示例代码:

  

测试结果:

Mybatis分页查询及特殊字符的处理_第2张图片

 

2.2 使用xml的![CDATA[ ]]语法

解析器不对CDATA区中的内容进行解析,而是将这些数据原封不动地交给下游程序处理。

示例代码:

  

测试结果:

Mybatis分页查询及特殊字符的处理_第3张图片

 

你可能感兴趣的:(intellij-idea,java,mysql,mybatis)