zoukankan      html  css  js  c++  java
  • 使用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); 
    		}
    	}
    	
    }
    

      

  • 相关阅读:
    Ubuntu18.04可执行文件运行提示No such file or directory
    Linux gcc(ar命令)打包库到另一个库中的另外一种方法
    干干净净的grep
    C语言里面和时间有关的函数
    Ubuntu上安装tftp服务
    因为新冠,宅家2周,折腾了一下电视盒子。
    批量处理文件的Python程序
    Windows 10中使用VirtualBox
    重采样Resample 的一些研究记录。
    微信公众号接入第三方服务器,设置自动回复、关键回复、自定义菜单,配置及开发流程
  • 原文地址:https://www.cnblogs.com/1020182600HENG/p/6929247.html
Copyright © 2011-2022 走看看