Mybatis 分页查询数据(借用map来封装参数)
1、IEmpDAO.java 提供分页查询的方法
/**
* 分页查询员工
*
* @param cp
* 当前页
* @param ps
* 查询几条
* @return
*/
public List<Emp> findEmpSplit(int cp, int ps);
2、EmpDAOImpl.java 接口方法的实现类
public List<Emp> findEmpSplit(int cp, int ps) {
try {
SqlSession sqlSession = MybatisSqlSessionFactory.getMySqlSession();
Map<String, Integer> map = new HashMap<String, Integer>();
map.put("start", (cp - 1) * ps);// 设置分页查询的起始值
map.put("ps", ps);// 设置每一页查询条数
return sqlSession
.selectList("cn.sz.hcq.pojo.Emp.findEmpSplit", map);
} catch (Exception e) {
e.printStackTrace();
} finally {
MybatisSqlSessionFactory.closeSqlSession();
}
return null;
}
3、Emp.java实体类
package cn.sz.hcq.pojo;
import java.io.Serializable;
import java.util.Date;
public class Emp implements Serializable {
private Integer empno;
private String ename;
private String job;
private Integer mgr;
private Date hiredate;
private Double sal;
private Double comm;
private Integer deptno;
public Integer getEmpno() {
return empno;
}
public void setEmpno(Integer empno) {
this.empno = empno;
}
public String getEname() {
return ename;
}
public void setEname(String ename) {
this.ename = ename;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
public Integer getMgr() {
return mgr;
}
public void setMgr(Integer mgr) {
this.mgr = mgr;
}
public Date getHiredate() {
return hiredate;
}
public void setHiredate(Date hiredate) {
this.hiredate = hiredate;
}
public Double getSal() {
return sal;
}
public void setSal(Double sal) {
this.sal = sal;
}
public Double getComm() {
return comm;
}
public void setComm(Double comm) {
this.comm = comm;
}
public Integer getDeptno() {
return deptno;
}
public void setDeptno(Integer deptno) {
this.deptno = deptno;
}
}
4、Emp.xml 实体映射文件
<?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="cn.sz.hcq.pojo.Emp">
<!-- 分页查询员工 -->
<select id="findEmpSplit" parameterType="java.util.Map"
resultType="cn.sz.hcq.pojo.Emp">
select empno,ename,job,mgr,hiredate,sal,comm,deptno from
emp limit #{start},#{ps}
</select>
</mapper>
5、测试类Test.java
public class Test {
public static void main(String[] args) {
IEmpDAO empdao = new EmpDAOImpl();
// 分页查询
int cp = 1;//当前页
int ps = 2;//每页显示的数目
List<Emp> emplist = empdao.findEmpSplit(cp, ps);
for (int i = 0; i < emplist.size(); i++) {
Emp emp = emplist.get(i);
System.out.println(emp.getEmpno() + "," + emp.getEname());
}
}
}
补充知识点:
sql语句中传递的多个参数不能使用现有的所有的实体类来封装
1.可以自己创建一个新的实体类来封装参数
2.使用map来封装参数