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);
}
} }

  

使用Oracle实现的MyBatis分页查询效果的更多相关文章

  1. oracle count 百万级 分页查询记要总数、总条数优化

    oracle count 百万级 分页查询记录总数.总条数优化 oracle count 百万级 查询记录总数.总条数优化 最近做一个项目时,做分页时,发现分页查询速度很慢,分页我做的是两次查询,一次 ...

  2. Oracle中的SQL分页查询原理和方法详解

    Oracle中的SQL分页查询原理和方法详解 分析得不错! http://blog.csdn.net/anxpp/article/details/51534006

  3. Oracle和MySql的分页查询区别和PL/SQL的基本概念

    Oracle和MySql的分页查询区别:     Oracle的分析查询,之前Oracle的分页是使用伪列 ROWNUM 结合子查询实现,mysql的分页更简单,直接使用 LIMIT 关键字就可以实现 ...

  4. springmvc+spring+mybatis分页查询实例版本1,ver1.0

    无聊做做看看,几乎没有怎么仔细做过这方面的,总是以为很简单,想想就会,实际做起来结合工作经验感觉还是挺有收获的,可以用在自己的项目上 第一版本思路:框架使用ssm,这个无所谓,采用分页语句查询指定页面 ...

  5. Oracle ROWNUM用法和分页查询总结(转)

    [转载] Oracle的分页查询语句基本上可以按照本文给出的格式来进行套用. Oracle分页查询格式(一):http://yangtingkun.itpub.net/post/468/100278 ...

  6. Oracle ROWNUM用法和分页查询总结

    **************************************************************************************************** ...

  7. mybatis分页查询需要注意的问题

    一般对mybatis的分页查询的关键代码就两行: #currentPage代表当前页,pageSize代表每页的行数 PageHelper.startPage(currentPage, pageSiz ...

  8. [转]Oracle ROWNUM用法和分页查询总结

    本文转自:http://blog.csdn.net/fw0124/article/details/42737671 ****************************************** ...

  9. MySQL、SqlServer、Oracle三大主流数据库分页查询

    在这里主要讲解一下MySQL.SQLServer2000(及SQLServer2005)和ORCALE三种数据库实现分页查询的方法.可能会有人说这些网上都有,但我的主要目的是把这些知识通过我实际的应用 ...

随机推荐

  1. 2018/2/20 Springretry,Feign,以及用通俗的语言(自认为)教会你关于Hystrix的复杂概念

    本来想昨天写的,但临时有事.弄的一晚上都没睡觉,现在头好晕,所以此笔记如果有语言措辞的组织不当,还请见谅:最后,本文可能涉及到大量专业名词,我会尽量用通俗的语句去阐述清楚它们的意思,但如果还是没看懂, ...

  2. UVa 12563_Jin Ge Jin Qu hao

    [题意]在KTV唱歌,假设每首歌最长180s,时间结束时如果还有歌正在唱,则将此歌唱完.为使唱歌时间最长,规定最后唱长达678s的<劲歌金曲>[介是个嘛?] 假设你正在唱KTV,在剩余的t ...

  3. Codeforces 777E(离散化+dp+树状数组或线段树维护最大值)

    E. Hanoi Factory time limit per test 1 second memory limit per test 256 megabytes input standard inp ...

  4. sh变更权限

    添加权限 假设您创建一个 “Hello world” 的 shell 脚本.当您第一次创建脚本时,它通常是不可执行的.使用 chmod 命令和 +x 选项添加执行权限,如清单 5 所示. 清单 5. ...

  5. ORA-00942:表或视图不存在 低级错误一例

    ORA-00942:表或视图不存在  低级错误一例 运行查询语句,报ORA-00942错误 检查后发现没有指定表的所属用户.加入用户.再次查询,查询正常,截图例如以下: *************** ...

  6. react 执行 yarn build 页面无法显示

    资源文件路径问题 如果你使用create-react-app创建项目,执行命令 yarn build 后,直接以静态方式打开build文件夹内的index.html,会看到页面显示出现问题,打开con ...

  7. 在Linux(centos)上安装PHP的mongodb扩展 成功试过的

    到http://pecl.php.net/package/mongo下载相应的mongodb客户端,本例为1.2.1# wget http://pecl.php.net/get/mongo-1.2.1 ...

  8. 通讯编程入门--WEBSOCKET

    C#通讯编程入门--WEBSOCKET WebSocket服务端 C#示例代码 using System; using System.Collections.Generic; using System ...

  9. skype默认占用80和443port

    今天把server的port更改为80,结果起不来,报告"port已经被占用"的错误. 使用下列命令找到了元凶: 1. netstat -ano | findstr 80 找到占用 ...

  10. MySQL-删除数据(DELECT)

    数据库备份介绍: 数据库一旦删除数据,它就会永远消失. 因此,在执行DELETE语句之前,应该先备份数据库,以防万一要找回删除过的数据. MySQL提供了非常有用的工具,用于在服务器上本地备份或转储M ...