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));
}
}