mybatis中oracle實現分頁效果


首先當我們需要通過xml格式處理sql語句時,經常會用到< ,<=,>,>=等符號,但是很容易引起xml格式的錯誤,這樣會導致后台將xml字符串轉換為xml文檔時報錯,從而導致程序錯誤。

  這樣的問題在iBatiS中或者自定義的xml處理sql的程序中經常需要我們來處理。其實很簡單,我們只需作如下替換即可避免上述的錯誤:

原符號  <  <=   > >=   &   '   "
替換符號 &lt; &lt;= &gt; &gt;= &amp; &apos; &quot;

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

數據庫的數據

一、邏輯分頁

接口

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

}

數據就取出來了

二、物理分頁。

用roacle是數據庫自己的分頁語句分頁

 

 

接口

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

}

查詢結果

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM