mybatis中oracle实现分页效果详解编程语言

首先当我们需要通过xml格式处理sql语句时,经常会用到< ,<=,>,>=等符号,但是很容易引起xml格式的错误,这样会导致后台将xml字符串转换为xml文档时报错,从而导致程序错误。

  这样的问题在iBatiS中或者自定义的xml处理sql的程序中经常需要我们来处理。其实很简单,我们只需作如下替换即可避免上述的错误:

原符号  <  <=   > >=   &   ’   “
替换符号 &lt; &lt;= &gt; &gt;= &amp; &apos; &quot;

————————————————————————————————————————————————————————————————————————

数据库的数据

mybatis中oracle实现分页效果详解编程语言

一、逻辑分页

接口

package com.dao; 
 
 
import java.util.List; 
import java.util.Map; 
 
import org.apache.ibatis.session.RowBounds; 
 
import com.model.Student; 
 
public interface StudentMapper { 
    /** 
     * 分页查询 
     */ 
    public List<Student> selectall(RowBounds rb);//需要传RowBounds 类型的参数 
 
}

配置文件

<?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.dao.StudentMapper"> 
  
    <select id="selectall" resultType="student" > 
        select * from student 
    </select> 
    
 </mapper>

JUnit测试

package com.util; 
 
import static org.junit.Assert.*; 
 
import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.List; 
import java.util.Map; 
 
import org.apache.ibatis.session.RowBounds; 
import org.apache.ibatis.session.SqlSession; 
import org.junit.After; 
import org.junit.Before; 
import org.junit.Test; 
 
import com.dao.StudentMapper; 
import com.model.Student; 
 
public class Jtest { 
    private SqlSession ss; 
    private StudentMapper sm; 
    @Before 
    public void setUp() throws Exception { 
        ss=SqlSessionUtil.getSqlSession(); 
        sm=ss.getMapper(StudentMapper.class); 
         
    } 
 
    @After 
    public void tearDown() throws Exception { 
        ss.commit(); 
        ss.close(); 
    } 
 
    @Test 
    public void selectall() { 
         
        //跳过几行 
        int offset = 3; 
        //取几行 
        int limit = 3; 
         
        RowBounds rb = new RowBounds(offset, limit);         
        List<Student> st=sm.selectall(rb); 
        for(Student tt:st){ 
            System.out.println(tt); 
        } 
    } 
 
}

数据就取出来了

mybatis中oracle实现分页效果详解编程语言

二、物理分页。

用roacle是数据库自己的分页语句分页

 mybatis中oracle实现分页效果详解编程语言

 

接口

package com.dao; 
import java.util.List; 
import java.util.Map; 
 
import org.apache.ibatis.session.RowBounds; 
 
import com.model.Student; 
 
public interface StudentMapper { 
     
    /** 
     * 分页查询 
     */ 
    public List<Student> selectall(Integer offset, Integer limit ); 
     
}

配置文件

<?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.dao.StudentMapper"> 
     
    <select id="selectall" resultType="student"> 
        select * from (select t.*,rownum rownu from STUDENT t  
        where rownum&lt;=#{param1}*#{param2})tt 
        where tt.rownu>(#{param1}-1)*#{param2} 
    </select> 
 
 </mapper>

JUnit测试

package com.util; 
 
import static org.junit.Assert.*; 
 
import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.List; 
import java.util.Map; 
 
import org.apache.ibatis.session.RowBounds; 
import org.apache.ibatis.session.SqlSession; 
import org.junit.After; 
import org.junit.Before; 
import org.junit.Test; 
 
import com.dao.StudentMapper; 
import com.model.Student; 
 
public class Jtest { 
    private SqlSession ss; 
    private StudentMapper sm; 
    @Before 
    public void setUp() throws Exception { 
        ss=SqlSessionUtil.getSqlSession(); 
        sm=ss.getMapper(StudentMapper.class); 
         
    } 
 
    @After 
    public void tearDown() throws Exception { 
        ss.commit(); 
        ss.close(); 
    } 
    
    @Test 
    public void selectall() { 
        //当前第几页  
        Integer offset = 2; 
        //每页行数 
        Integer limit = 3;         
        List<Student> st=sm.selectall(offset, limit); 
        for(Student tt:st){ 
            System.out.println(tt); 
        } 
    } 
 
}

查询结果

mybatis中oracle实现分页效果详解编程语言

 

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/16981.html

(0)
上一篇 2021年7月19日 19:47
下一篇 2021年7月19日 19:47

相关推荐

发表回复

登录后才能评论