前面一篇文章介绍了通过拦截器发方式实现mybatis分页(应该是比较常用的一种方式,网上搜索结果较多),这里介绍另一种方式:通过代码封装,不改变mybatis框架的任何东西(个人推荐使用该方式),这个代码是我老大写的,个人觉得很好,原理也很简单,修改也很容易,所以贴出来,供大家参考。
package com.dnkx.base.service;
import com.dnkx.base.persistance.BaseMapper;
import com.dnkx.base.utils.PaginationSupport;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* Created by baowp on 2015/8/18.
*/
public interface BaseService<T extends BaseMapper<E>,E extends Serializable> {
E get(Long id);
int save(E e);
int update(E e);
int delete(Long id);
/**
* 按条件查询列表
* @param params
* @return
*/
List<E> list(Map params);
/**
* 按条件查询记录数
* @param params
* @return
*/
int count(Map params);
/**
* 按条件分布查询列表
* @param params
* @return
*/
PaginationSupport<E> pageList(Map params);
/**
* 按条件分布查询列表
* @param params
* @return
*/
PaginationSupport<E> pageList(E params);
}
上面这个是基础的service类,需要分页的业务service都继承于这个基础的service
下面的实现类和Mapper类同理:
service实现类,里面包含了分页的实现,原理很简单的
package com.dnkx.base.service.impl;
import com.dnkx.base.persistance.BaseMapper;
import com.dnkx.base.service.BaseService;
import com.dnkx.base.utils.PaginationSupport;
import com.dnkx.common.utils.BeanUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* Created by baowp on 2015/8/18.
*/
public class BaseServiceImpl<T extends BaseMapper<E>, E extends Serializable> implements BaseService<T, E> {
protected final Logger logger = LoggerFactory.getLogger(getClass());
@Autowired
protected T mapper;
@Override
public E get(Long id) {
return mapper.get(id);
}
@Override
public int save(E e) {
return mapper.save(e);
}
@Override
public int update(E e) {
return mapper.update(e);
}
@Overr