MyBatis--分页按条件查询

实体类Student

public class Student {
	private Integer sid;//学生id
	private String sname;//姓名
	private Integer sage;//年龄
	private Character ssex;//性别
	private Integer cid;//班级id
	
	public Student() {
		super();
	}
	
	public Student(String sname, Integer sage, Character ssex, Integer cid) {
		super();
		this.sname = sname;
		this.sage = sage;
		this.ssex = ssex;
		this.cid = cid;
	}

	public Student(Integer sid, String sname, Integer sage, Character ssex, Integer cid) {
		super();
		this.sid = sid;
		this.sname = sname;
		this.sage = sage;
		this.ssex = ssex;
		this.cid = cid;
	}
	public Integer getSid() {
		return sid;
	}
	public void setSid(Integer sid) {
		this.sid = sid;
	}
	public String getSname() {
		return sname;
	}
	public void setSname(String sname) {
		this.sname = sname;
	}
	public Integer getSage() {
		return sage;
	}
	public void setSage(Integer sage) {
		this.sage = sage;
	}
	public Character getSsex() {
		return ssex;
	}
	public void setSsex(Character ssex) {
		this.ssex = ssex;
	}
	public Integer getCid() {
		return cid;
	}
	public void setCid(Integer cid) {
		this.cid = cid;
	}
	@Override
	public String toString() {
		return "Student [sid=" + sid + ", sname=" + sname + ", sage=" + sage + ", ssex=" + ssex + ", cid=" + cid + "]";
	}
	
}

实体分页类pageBean

//定义一个泛型类封装分页数据
public class PageBean<T> {
	private List<T> beanList;//当前页显示的数据,数据查询
	private int pageSize;//页大小,业务规则
	private int pageIndex;//当前页索引,用户请求
	private int totalRecord;//数据总条数,数据查询
	private int totalPage;//总页数,根据totalRecord和pageSize计算
	private int pageBegin;//显示的开始页码
	private int pageEnd;//显示的结束页码
	private String url; //在哪赋值:Servlet
		
	public PageBean() {
		super();
		// TODO Auto-generated constructor stub
	}
	public List<T> getBeanList() {
		return beanList;
	}
	public void setBeanList(List<T> beanList) {
		this.beanList = beanList;
	}
	public int getPageSize() {
		return pageSize;
	}
	public void setPageSize(int pageSize) {
		this.pageSize = pageSize;
	}
	public int getPageIndex() {
		return pageIndex;
	}
	public void setPageIndex(int pageIndex) {
		this.pageIndex = pageIndex;
	}
	public int getTotalRecord() {
		return totalRecord;
	}
	public void setTotalRecord(int totalRecord) {
		this.totalRecord = totalRecord;
	}
	public int getTotalPage() {
		//如何计算总页数:
		return (totalRecord%pageSize==0)?totalRecord/pageSize:totalRecord/pageSize+1;
	}
	//可以不要
	public void setTotalPage(int totalPage) {
		this.totalPage = totalPage;
	}
	public int getPageBegin() {
		return pageBegin;
	}
	public void setPageBegin(int pageBegin) {
		this.pageBegin = pageBegin;
	}
	public int getPageEnd() {
		return pageEnd;
	}
	public void setPageEnd(int pageEnd) {
		this.pageEnd = pageEnd;
	}
	//计算开始页和结束页
	public void setPageBeginAndPageEnd() {
		//总页数小于10
		if(getTotalPage()<10) {
			pageBegin=1;
			pageEnd=getTotalPage();
		}else {
			pageBegin=pageIndex-5;
			pageEnd=pageIndex+4;
			//上标越界
			if(pageBegin<1) {
				pageBegin=1;
				pageEnd=10;
			}
			//下标越界
			if(pageEnd>getTotalPage()) {
				pageBegin=getTotalPage()-9;
				pageEnd=getTotalPage();
			}
		}
	}
	
	public String getUrl() {
		return url;
	}
	public void setUrl(String url) {
		this.url = url;
	}
	@Override
	public String toString() {
		return "PageBean [beanList=" + beanList + ", pageSize=" + pageSize + ", pageIndex=" + pageIndex
				+ ", totalRecord=" + totalRecord + ", totalPage=" + getTotalPage() + ", pageBegin=" + pageBegin
				+ ", pageEnd=" + pageEnd + "]";
	}	
	
}

DAO接口类StudentDAO.java

public interface StudentDAO {
	
	//分页查询
	//查询总条数
	int selectAllStudentNumber(@Param("student")Student student);
	
	//所有学生的数据
	List<Student> selsectAllStudent(@Param("page") int page,@Param("pageSize") int pageSize,
			@Param("student")Student student);
}

接口映射文件xml:StudentDAO.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="com.woniu.dao.StudentDAO">
	<!-- 查询所有学生总数 -->	
	<select id="selectAllStudentNumber" resultType="int">
		select count(*) from student
		<include refid="selectStudent"></include>
	</select>
	<!-- 查询当前页需要展示的学生 -->
	<select id="selsectAllStudent" resultType="Student">
		select * from student  
		<include refid="selectStudent"></include>
		limit #{page},#{pageSize}
	</select>
	<!-- 查询条件 -->
	<sql id="selectStudent">
		<where>
			<!-- 这里条件查询只用了学生对象中的姓名 -->
			<if test="student.sname!=null and student.sname!=''">
				and sname like '%' #{student.sname} '%'
			</if>
		</where>
	</sql>
</mapper>

mybatis主配置文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
 PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
	<properties resource="jdbc.properties" />
	<!-- 别名设置 -->
	<typeAliases>
		<package name="com.woniu.entity"/>
	</typeAliases>
	<!-- 运行的基本环境配置 -->
	<environments default="dev">
		<environment id="dev">
			<!-- 事物管理器,默认jdbc的事物管理 -->
			<transactionManager type="JDBC" />
			<!-- 数据源type配置连接池,默认使用内置的连接池 -->
			<dataSource type="POOLED">
			<!-- jdbc四大参数 -->
				<property name="driver" value="${jdbc.driver}" />
				<property name="url" value="${jdbc.url}" />
				<property name="username" value="${jdbc.username}" />
				<property name="password" value="${jdbc.password}" />
			</dataSource>
		</environment>
	</environments>
	<mappers>
		<!-- 包扫描 -->
		<package name="com.woniu.dao"/>
	</mappers>
</configuration>

测试类

public class StudentDAOImpTest {
	SqlSession sqlSession;
	StudentDAO studentDaoImp;
	
	@Before
	public void setUp() {
		sqlSession=MyBatisUtil.getSqlSession();
		//getMapper:底层就是使用动态代理,生成接口的实现类
		studentDaoImp = sqlSession.getMapper(StudentDAO.class);
	}
	
	@After
	public void tearDown() {
		if(sqlSession!=null) {
			sqlSession.close();
		}
	}	
	
	@Test
	public void pagingStudent(){
		PageBean pb = new PageBean();
		//每页展示数据条数
		pb.setPageSize(3);
		//当前页索引
		pb.setPageIndex(1);
		//当前页数据起始索引
		int page = (pb.getPageIndex()-1)*pb.getPageSize();
		Student student = new Student();
		//按姓名查询
		student.setSname("小明");
		//总条数
		//查询总数
		pb.setTotalRecord(studentDaoImp.selectAllStudentNumber(student));
		//当前页的所有学生对象
		pb.setBeanList(studentDaoImp.selsectAllStudent(page, pb.getPageSize(), student));
		//计算开始页和结束页
		pb.setPageBeginAndPageEnd();
		System.out.println(pb);
	}
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值