自己写分页实体实现MyBatis分页

Page实体类

package com.mybatis.pojo.common;

import java.util.List;

/**
 * 
 * @ClassName: Page
 * @Description: 分页实体
 * @param: @param <T>
 */
public class Page<T> {

	private int currentPage; // 当前页
	private int pageNum; // 每页显示的条数
	private int totalPage; // 总页数
	private int totalNum; // 数据的总条数
	private List<T> datas; // 得到的所有数据集合

	public int getCurrentPage() {
		return currentPage;
	}

	public void setCurrentPage(int currentPage) {
		this.currentPage = currentPage;
	}

	public int getPageNum() {
		return pageNum;
	}

	public void setPageNum(int pageNum) {
		this.pageNum = pageNum;
	}

	public int getTotalPage() {
		return totalPage;
	}

	public void setTotalPage(int totalPage) {
		this.totalPage = totalPage;
	}

	public int getTotalNum() {
		return totalNum;
	}

	public void setTotalNum(int totalNum) {
		this.totalNum = totalNum;
	}

	public List<T> getDatas() {
		return datas;
	}

	public void setDatas(List<T> datas) {
		this.datas = datas;
	}

	@Override
	public String toString() {
		return "Page [currentPage=" + currentPage + ", pageNum=" + pageNum + ", totalPage=" + totalPage + ", totalNum="
				+ totalNum + ", datas=" + datas + "]";
	}

}

UserMapper.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<!-- dtd是对配置文件的约束,配置文件必须根据它的规定写 -->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 设置命名空间,使用实体的全路径 -->
<mapper namespace="com.mybatis.pojo.User">
	<!-- 查询总条数 -->
	<select id="count" resultType="java.lang.Integer">
		select count(*) from t_user
		<if test="condition != null and condition != ''">
			where username like concat(#{condition}, "%")
		</if>
	</select>
	<!-- 分页查询 -->
	<select id="find" parameterType="map" resultType="com.mybatis.pojo.User">
		select * from t_user
		<if test="condition != null and condition != ''">
			where username like concat(#{condition}, "%")
		</if>
		limit #{offSet}, #{pageNum}
	</select>
</mapper>

BaseDao

package com.mybatis.dao;

import com.mybatis.pojo.common.Page;

public interface BaseDao<E> {
	
	Page<E> find(int currentPage, int pageNum, String condition);
	
}

UserDao

package com.mybatis.dao;

import com.mybatis.pojo.User;

public interface UserDao extends BaseDao<User> {
	
}

BaseDaoImpl

package com.mybatis.filter;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.ibatis.session.SqlSession;

import com.mybatis.pojo.common.Page;
import com.mybatis.utils.MyBatisUtil;

public class BaseDaoImpl<E> {

	private static SqlSession sqlSession = null;
	
	/**
	 * 
	 * @Title: find
	 * @Description: 分页查询
	 * @param: @param clz
	 * @param: @param currentPage
	 * @param: @param pageNum
	 * @param: @param condition
	 * @param: @return
	 * @return: Page<E>
	 * @throws
	 */
	public Page<E> find(Class<?> clz, int currentPage, int pageNum, String condition){
		Page<E> page = new Page<E>();
		Map<String, Object> map = new HashMap<String, Object>();
		if(currentPage < 1) {
			currentPage = 1;
		}
		page.setCurrentPage(currentPage); // 当前页
		page.setPageNum(pageNum); // 每页显示的条数
		int offSet = (currentPage - 1) * pageNum; // 开始索引
		try {
			map.put("offSet", offSet);
			map.put("pageNum", pageNum);
			map.put("condition", condition); // 模糊查询
			sqlSession = MyBatisUtil.getSqlSession();
			List<E> list = sqlSession.selectList(clz.getName() + ".find", map);
			page.setDatas(list);
			int totalNum = sqlSession.selectOne(clz.getName() + ".count");
			page.setTotalNum(totalNum); // 数据的总条数
			int totalPage = (totalNum - 1) / pageNum + 1;
			page.setTotalPage(totalPage); // 总页数
		} finally {
			MyBatisUtil.close(sqlSession);
		}
		return page;
	}
	
}

UserDaoImpl

package com.mybatis.filter;

import java.util.List;

import org.apache.ibatis.session.SqlSession;

import com.mybatis.dao.UserDao;
import com.mybatis.pojo.User;
import com.mybatis.pojo.common.Page;
import com.mybatis.utils.MyBatisUtil;

public class UserDaoImpl extends BaseDaoImpl<User> implements UserDao {

	@Override
	public Page<User> find(int currentPage, int pageNum, String condition) {
		return super.find(User.class, currentPage, pageNum, condition);
	}

}

UserTest

package com.mybatis.test.unused;

import org.junit.Test;

import com.mybatis.dao.UserDao;
import com.mybatis.dao.impl.UserDaoImpl;

/**
 * 
 * @ClassName: UserTest
 * @Description: 测试类
 * @param:
 */
public class UserTest {
	
	UserDao userDao = new UserDaoImpl();
	
	// 分页查询
	@Test
	public void pageTest(){
		System.out.println(userDao.find(1, 3, null));
	}

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值