pageHelper分页工具的使用

pageHelper分页工具的使用

        <!-- mybatis分页 开始 -->
        <dependency>
		  	<groupId>com.github.pagehelper</groupId>
		  	<artifactId>pagehelper</artifactId>
		  	<version>5.1.2</version>
		</dependency>
        <!-- mybatis分页 结束 -->

说明

  @RequestMapping("/emps")
    public String list(@RequestParam(required = false,defaultValue = "1",value = "pn")Integer pn,
                       Map<String,Object> map){
 
        //引入分页查询,使用PageHelper分页功能
        //在查询之前传入当前页,然后多少记录
        PageHelper.startPage(pn,5);
        //startPage后紧跟的这个查询就是分页查询
        List<Employee> emps = employeeService.getAll();
        //使用PageInfo包装查询结果,只需要将pageInfo交给页面就可以
        PageInfo pageInfo = new PageInfo<>(emps,5);
        //pageINfo封装了分页的详细信息,也可以指定连续显示的页数
 
        map.put("pageInfo",pageInfo);
        return "list";
}

底层代码实现

	@Override
	public PageModel<HistoryMonitor> getList(ReceiveParameterModel receiveParameterModel) {
		// TODO Auto-generated method stub
		PageHelper.startPage(receiveParameterModel.getPage(), receiveParameterModel.getRows());
		List<JsonModel> query = receiveParameterModel.getQuery();
		Map<String,Object> map = new HashMap<>();
		for (JsonModel jsonModel : query) {
			if (jsonModel.getValue() != null && jsonModel.getValue() != "") {
				map.put(jsonModel.getName(), jsonModel.getValue());
			}
		}
		return new PageModel<>(mapper.getList(map));
	}
public interface InstallTrainService extends BaseService<InstallTrain>{

}
import com.cloud.core.model.PageModel;
import com.cloud.core.model.ReceiveParameterModel;

public interface BaseService<T>{

	/**
	 * 根据Id查询实体
	 * @param id
	 * @return
	 */
	T getById(Object id);

	/**
	 *	根据条件查询
	 * @param receiveParameterModel
	 * @return
	 */
	PageModel<T> getList(ReceiveParameterModel receiveParameterModel);

	/**
	 *	插入实体
	 * @param entity
	 * @return
	 */
	T insert(T entity);

	/**
	 * 更新实体
	 * @param entity
	 * @return
	 */
	T update(T entity);

	/**
	 * 更新null值
	 * @param entity
	 * @return
	 */
	T updateNull(T entity) ;

	void delete(List<Object> obj);
}
public class InstallTrainServiceImpl extends BaseServiceImpl<InstallTrainMapper,InstallTrain> implements InstallTrainService{

}
import com.cloud.core.model.PageModel;
import com.cloud.core.model.ReceiveParameterModel;
import com.cloud.core.service.BaseService;
import com.cloud.core.util.ExampleUtil;
import com.github.pagehelper.PageHelper;
import org.apache.catalina.User;
import org.springframework.beans.factory.annotation.Autowired;
import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.entity.Example;

import java.lang.reflect.ParameterizedType;
import java.util.List;
public class BaseServiceImpl<M extends Mapper<T>, T> implements BaseService<T> {

	@Autowired
	protected M mapper;

	public T getById(Object id) {
		return mapper.selectByPrimaryKey(id);
	}

	public PageModel<T> getList(ReceiveParameterModel receiveParameterModel) {
		PageModel<T> pageModel = null;
		if (receiveParameterModel != null) {

			Class<T> clazz = (Class<T>)((ParameterizedType)getClass().getGenericSuperclass()).getActualTypeArguments()[1];
			Example example = ExampleUtil.getExample(clazz, receiveParameterModel);
			if (receiveParameterModel.getPage() == null || receiveParameterModel.getRows() == null) {
				Integer total = mapper.selectCountByExample(example);
				List<T> list = mapper.selectByExample(example);
				pageModel = new PageModel<T>(total, list);
			}
			if (receiveParameterModel.getPage() != null && receiveParameterModel.getRows() != null) {
				PageHelper.startPage(receiveParameterModel.getPage(), receiveParameterModel.getRows());
				pageModel = new PageModel<T>(mapper.selectByExample(example));
			}
		}
		return pageModel;
	}

	public T insert(T entity) {
		mapper.insert(entity);
		return entity;
	}

	public T update(T entity) {
		mapper.updateByPrimaryKeySelective(entity);
		return entity;
	}

	public T updateNull(T entity) {
		mapper.updateByPrimaryKey(entity);
		return entity;
	}

	public void delete(List<Object> obj) {
		obj.forEach(ob -> mapper.deleteByPrimaryKey(ob));
	}
}
import com.github.pagehelper.PageInfo;

import java.util.List;
public class PageModel<T> {
	private Integer total;
	private List<T> rows;

	public PageModel() {
	}

	public PageModel(Integer total, List<T> rows) {
		this.total = total;
		this.rows = rows;
	}

	public PageModel(List<T> list){
		PageInfo<T> pageInfo = new PageInfo<T>(list);
		Long tal = pageInfo.getTotal();
		total= tal.intValue();
		rows = pageInfo.getList();
	}

	public Integer getTotal() {
		return total;
	}

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

	public List<T> getRows() {
		return rows;
	}

	public void setRows(List<T> rows) {
		this.rows = rows;
	}
}

public class JsonModel {
	private String name;
	private String value;
	private String type;
}

public class ReceiveParameterModel {
	private Integer page;
	private Integer rows;
	private String sort;
	private String order;
	private List<JsonModel> query;
	private String querystr;

	public List<JsonModel> getQuery() {
		if (query == null && querystr != null) {
			try {
				query = JSONArray.parseArray(querystr, JsonModel.class);
			} catch (Exception e) {
				throw new CntenException(query, "数据转换异常", e.getStackTrace().toString(), e);
			}
		}
		return query;
	}
}
import com.cloud.core.model.ReceiveParameterModel;
import org.springframework.boot.autoconfigure.data.web.SpringDataWebProperties;
import tk.mybatis.mapper.entity.Example;

import java.util.Arrays;
import java.util.List;

public class ExampleUtil {

	public static<T> Example getExample(Class<T> clazz, ReceiveParameterModel receiveParameterModel) {
		Example example = example = new Example(clazz);
		if (receiveParameterModel != null) {
			List<JsonModel> list = receiveParameterModel.getQuery();
			String sort = receiveParameterModel.getSort();
			String order = receiveParameterModel.getOrder();
			Example.Criteria criteria = example.createCriteria();
			if (list != null && list.size() > 0) {
				for (JsonModel jsonModel : list) {
					//实体类是否存在该字段且字段值不为空
					if (jsonModel.getName() != null && jsonModel.getType() != null && StringUtil.isNotEmpty(jsonModel.getValue())  && existsField(clazz, jsonModel.getName())) {
						if ("llike".equals(jsonModel.getType()) ) {
							criteria.andLike(jsonModel.getName(), "%"+jsonModel.getValue());
							continue;
						}
						if ("rlike".equals(jsonModel.getType()) ) {
							criteria.andLike(jsonModel.getName(), jsonModel.getValue()+"%");
							continue;
						}
						if ("like".equals(jsonModel.getType()) ) {
							criteria.andLike(jsonModel.getName(), "%"+jsonModel.getValue()+"%");
							continue;
						}
						if ("eq".equals(jsonModel.getType())) {
							criteria.andEqualTo(jsonModel.getName(), jsonModel.getValue());
							continue;
						}
						if ("lt".equals(jsonModel.getType())) {
							criteria.andLessThan(jsonModel.getName(), jsonModel.getValue());
							continue;
						}
						if ("le".equals(jsonModel.getType())) {
							criteria.andLessThanOrEqualTo(jsonModel.getName(), jsonModel.getValue());
							continue;
						}
						if ("gt".equals(jsonModel.getType())) {
							criteria.andGreaterThan(jsonModel.getName(), jsonModel.getValue());
							continue;
						}
						if ("ge".equals(jsonModel.getType())) {
							criteria.andGreaterThanOrEqualTo(jsonModel.getName(), jsonModel.getValue());
							continue;
						}
						if ("in".equals(jsonModel.getType())) {
							criteria.andIn(jsonModel.getName(), getList(jsonModel.getValue()));
							continue;
						}
					}
				}
			}

			if (sort != null) {
				if ("asc".equals(order)) {
					example.orderBy(sort).asc();
				}
				if ("desc".equals(order)) {
					example.orderBy(sort).desc();
				}
			}
		}


		return example;
	}

	/**
	 * 判断该实例是否存在该字段
	 * @param clz
	 * @param fieldName
	 * @return
	 */
	private static boolean existsField(Class clz,String fieldName){
		try{
			return clz.getDeclaredField(fieldName)!=null;
		}
		catch(Exception e){
		}
		if(clz!=Object.class){
			return existsField(clz.getSuperclass(),fieldName);
		}
		return false;
	}

	/**
	 * 将字符串转换为集合
	 * @param string
	 * @return
	 */
	private static List<String> getList(String string) {
		String[] split = string.split(",");
		List<String> strings = Arrays.asList(split);
		return strings;
	}
}

猜你喜欢

转载自blog.csdn.net/qq_35029061/article/details/83303282