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

    查询结果

  • 相关阅读:
    IE8及其以下浏览器边框圆角兼容问题
    关于git的一些指令及遇到的问题和解决方法
    vue项目环境搭建及运行
    webpack中的重要功能
    webpack 的重要功能
    c++ stl sort 自定义排序函数cmp要遵循 strict weak ordering
    spring boot 包jar运行
    windows上传文件到linux云服务器上
    最少硬币数目的问题
    leetcode 415 两个字符串相加
  • 原文地址:https://www.cnblogs.com/hq233/p/6753712.html
Copyright © 2011-2022 走看看