文章目录
1、PageBean分页
1、 编写实体类Users用来测试
public class Users {
private int id;
private String uname;
private String pwd;
private String sex;
// Getter / Setter / toString
}
2、 编写PageBean
public class PageBean<T> {
private int totalPage; // 总页数
private int totalCount; // 总共有多少条数
private int currentPage; // 当前是第几页
private int currentCount; // 当前页面显示多少条数据
private List<T> list = new ArrayList<T>();
// Getter / Setter / toString
}
3、编写一个MapperUtil用来获取session,后期学了Spring之后会托管给Spring,就不需要此类了
public class PageBeanUtil {
private static InputStream in;
private static SqlSessionFactory build;
private static SqlSession session ;
public static SqlSession getSession(){
try {
in = Resources.getResourceAsStream("mybatis-config.xml");
build = new SqlSessionFactoryBuilder().build(in);
session = build.openSession();
} catch (IOException e) {
e.printStackTrace();
}
return session;
}
// 关闭资源
public static void close(){
if (session != null){
session.close();
}
if (in != null){
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
4、 编写UserMapper,添加方法
public interface UserMapper {
/**
* 分页查询
* 当前页的第一条记录的索引值
* 每页显示的个数
* @return
*/
List<Users> findUserLimit(@Param("startIndex") Integer startIndex, @Param("pageSize") Integer pageSize);
/**
* 所有记录个数
* @return
*/
long findAllCount();
}
5、编写相应的UserMapper.xml中的SQL语句
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jl.mapper.UserMapper">
<select id="findAllCount" resultType="long">
select count(*) from users
</select>
<select id="findUserLimit" resultType="users">
select * from users limit #{startIndex},#{pageSize}
</select>
</mapper>
6、 编写UserService,UserServiceImpl
UserService
public interface UserService {
/**
* 分页查询
* @param page 当前页
* @param count 每页显示多少条数据
* @return
*/
PageBean getPageBean(Integer page, Integer count);
}
UserServiceImpl
@Service
public class UserServiceImpl implements UserService {
@Override
public PageBean getPageBean(Integer page, Integer count) {
// 封装pageBean对象
PageBean pageBean = new PageBean();
// 设置当前页
pageBean.setCurrentPage(page);
// 设置每页显示多少条数据(页面大小)
pageBean.setCurrentCount(count);
SqlSession session = PageBeanUtil.getSession();
UserMapper mapper = session.getMapper(UserMapper.class);
long totalCount = mapper.findAllCount();
// 设置总共有多少条记录
pageBean.setTotalCount((int) totalCount);
// 设置总页数
int totalPage = (int) (totalCount/(double)pageBean.getCurrentCount());
pageBean.setTotalPage(totalPage);
// 设置当前的所有数据 公式:(当前页-1)*页面大小
List<Users> userList = mapper.findUserLimit(((page - 1) * count), count);
pageBean.setList(userList);
return pageBean;
}
}
7、编写测试类
public class TestUtil {
@Test
public void test(){
UserServiceImpl userService = new UserServiceImpl();
PageBean pageBean = userService.getPageBean(1, 2);
System.out.println("当前页的页码:"+pageBean.getCurrentPage());
System.out.println("当前页的信息条数:"+pageBean.getCurrentCount());
System.out.println("所有的页数:"+pageBean.getTotalPage());
System.out.println("所有的信息个数:"+pageBean.getTotalCount());
List<Users> list = pageBean.getList();
for (Users user : list) {
System.out.println(user);
}
}
}
8、结果: