使用Oracle实现的MyBatis分页查询效果

1、mybatis.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"./mybatis-3-config.dtd">
<configuration>
<!-- properties配置文件中属性值,在整个配置文件中通过${}进行引用 -->
<properties>
	<property name="driver" value="com.mysql.jdbc.Driver" />
</properties>  
 
<typeAliases>
  <typeAlias type="com.wh.pojo.Emp" alias="Emp"/>
</typeAliases> 
  
<!-- 数据源环境信息配置 -->  
<environments default="development2">

	<environment id="development">
		<transactionManager type="JDBC" />
		<dataSource type="POOLED">
			<!-- mysql数据源配置 -->
			<property name="driver" value="${driver}" />
			<property name="url" value="jdbc:mysql://localhost/ys" />
			<property name="username" value="root" />
			<property name="password" value="admin" />
		</dataSource>
	</environment>
	
	<environment id="development2">
		<transactionManager type="JDBC" />
		<dataSource type="POOLED">
			<!-- oracle数据源配置 -->
			<property name="driver" value="oracle.jdbc.driver.OracleDriver" />
			<property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:orcl" />
			<property name="username" value="scott" />
			<property name="password" value="tiger" />
		</dataSource>
	</environment>
</environments>

<mappers>
	<mapper resource="com/wh/mapper/DeptMapper.xml" />
	<mapper resource="com/wh/mapper/EmpMapper.xml" />
</mappers>

</configuration>

2、EmpMapper.java

package com.wh.mapper;

import java.util.List;

import com.wh.common.PagerOracle;
import com.wh.pojo.Emp;
import com.wh.vo.VoOracle;

public interface EmpMapper {

	public void insertDept(Emp emp);

	public List<Emp> selectAll();
	
	public List<VoOracle> selectOracle(PagerOracle vo);

}

3、EmpMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
	"./mybatis-3-mapper.dtd">
	
<!--namespace 绑定接口   -->	
<mapper namespace="com.wh.mapper.EmpMapper"> 

	<resultMap id="EmpResultMap" type="Emp">
		<result property="pno" column="EMPNO" />
		<result property="pname" column="ENAME" />
		<result property="pjob" column="JOB" />
		<result property="pmgr" column="MGR" />
		<result property="phiredate" column="HIREDATE" />
		<result property="psal" column="SAL" />
		<result property="pcomm" column="COMM" />
		<result property="pdeptno" column="DEPTNO" />
	</resultMap>

    <!--查询所有        id 接口中的方法名          resultType 返回结果类型      resultType="com.wh.pojo.Dept"-->
	<select id="selectAll" resultMap="EmpResultMap">  
		select * from EMP
	</select>
	
    <!--oracle分页查询  -->
	<select id="selectOracle" parameterType="com.wh.common.PagerOracle"  resultType="com.wh.vo.VoOracle">  
	SELECT r.ename,r.dname,r.loc FROM (SELECT e.ename,d.dname,d.loc,ROWNUM s FROM dept d,emp e 
	
	<![CDATA[   	WHERE d.deptno=e.deptno AND ROWNUM<#{end} ) r where r.s>#{start}    ]]>

	</select>


</mapper>

4、EmpDaoImpl.java  

package com.wh.mapperImpl;

import java.util.List;

import com.wh.common.PagerOracle;
import com.wh.mapper.EmpMapper;
import com.wh.pojo.Emp;
import com.wh.vo.VoOracle;


public class EmpDaoImpl extends BaseDao implements EmpMapper {

	@Override
	public List<Emp> selectAll() { 
		//获得连接
		this.openSession();
		//找到接口
		EmpMapper mapper=(EmpMapper) ss.getMapper(EmpMapper.class);
		return mapper.selectAll();
	}

	@Override
	public void insertDept(Emp emp) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public List<VoOracle> selectOracle(PagerOracle vo) {
		//获得连接
		this.openSession();
		//找到接口
		EmpMapper mapper=(EmpMapper) ss.getMapper(EmpMapper.class);
		return mapper.selectOracle(vo);
	}

}

5、PagerOracle.java

package com.wh.common;

public class PagerOracle {
	private int recordCount;// 总记录数
	private int pageSize = 5;// 每页个数 自定义
	private int pageCount; // 总页数
	private int pageNum;// 当前页数
	private int start;// 起始记录数
	private int end;

	public PagerOracle(int recordCount, int pageNum) {
		super();
		this.recordCount = recordCount;
		this.pageNum = pageNum;
		// 总页数
		if (recordCount % pageSize == 0) {
			pageCount = recordCount / pageSize;
		}
		else {
			pageCount = recordCount / pageSize + 1;
		}
		// 当前页码处理
		if (pageNum < 1) {
			pageNum = 1;
		}
		if (pageNum > pageCount) {
			pageNum = pageCount;
		}
		// 起始位置 oracle从1开始
		start = (pageNum-1) * pageSize+1;
		end= start + pageSize - 1;
	}

	public int getRecordCount() {
		return recordCount;
	}

	public void setRecordCount(int recordCount) {
		this.recordCount = recordCount;
	}

	public int getPageSize() {
		return pageSize;
	}

	public void setPageSize(int pageSize) {
		this.pageSize = pageSize;
	}

	public int getPageCount() {
		return pageCount;
	}

	public void setPageCount(int pageCount) {
		this.pageCount = pageCount;
	}

	public int getPageNum() {
		return pageNum;
	}

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

	public int getStart() {
		return start;
	}

	public void setStart(int start) {
		this.start = start;
	}

	public int getEnd() {
		return end;
	}

	public void setEnd(int end) {
		this.end = end;
	}

}

6、VoOracle.java

package com.wh.vo;

import com.wh.common.PagerOracle;

public class VoOracle {
	private String ename;
	private String dname;
	private String Loc;
	private PagerOracle pager;

	public VoOracle() {

	}

	public VoOracle(PagerOracle pager) {
		super();
		this.pager = pager;
	}

	public String getEname() {
		return ename;
	}

	public void setEname(String ename) {
		this.ename = ename;
	}

	public String getDname() {
		return dname;
	}

	public void setDname(String dname) {
		this.dname = dname;
	}

	public String getLoc() {
		return Loc;
	}

	public void setLoc(String loc) {
		Loc = loc;
	}

	public PagerOracle getPager() {
		return pager;
	}

	public void setPager(PagerOracle pager) {
		this.pager = pager;
	}

	@Override
	public String toString() {
		return "VoOracle [ename=" + ename + ", dname=" + dname + ", Loc=" + Loc + ", pager=" + pager + "]";
	}

}

TestEmp.java

package com.wh.junit;
/**
 * mybatis编写顺序
 * DeptMapper.java、DeptMapper.xml、DeptDaoImpl.java、TestMyBatis.java
 */
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;

import com.wh.common.Pager;
import com.wh.common.PagerOracle;
import com.wh.mapperImpl.DeptDaoImpl;
import com.wh.mapperImpl.EmpDaoImpl;
import com.wh.pojo.Dept;
import com.wh.pojo.Emp;
import com.wh.vo.VO;
import com.wh.vo.VoOracle;

public class TestEmp {

	//插入
	@Test
	public void testInsertDept() throws IOException{
//		DeptDaoImpl dao=new DeptDaoImpl(); 
//		dao.insertDept(new Dept(4,"技术","4楼"));
	}
	
	//查询所有
	@Test
	public void testSelectAll() throws IOException{
		EmpDaoImpl dao=new EmpDaoImpl(); 
		List<Emp> list = dao.selectAll();
		for(Emp p:list){
		System.out.println(p); 
		}
	}
	
	//Oracle分页查询
	@Test
	public void testSelectOracle() throws IOException{
		EmpDaoImpl dao=new EmpDaoImpl(); 
		//
		List<VoOracle> list = dao.selectOracle(new PagerOracle(15,2));
		for(VoOracle p:list){
			System.out.println(p); 
		}
	}
	
}

  

原文地址:https://www.cnblogs.com/1020182600HENG/p/6929247.html