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

}

查询结果

时间: 2024-10-13 11:43:30

mybatis中oracle实现分页效果的相关文章

mybatis中oracle转mysql

刚来公司实习,遇到的第一个任务就是这个,简单记录一下思路过程.人菜的很,没啥参考价值. 测试时: 将现有的oracle库转为mysql: 用的Navicat自带数据传输功能,简单粗暴 出现的问题: 1.原本在oracle中 NUMBER类型的字段转为了decimal. (1)Oracle使用序列(SEQUENCE)实现的主键递增,原本表主键是没有AUTO_INCREMENT. (2)有些decimal类型的字段是主键. (3)Decimal不能设置AUTO_INCREMENT. 解决方法: 百度

mybatis中(Oracle)关于insert时主键自动加1的使用方法

<insert id="insert" paramType="User"> <selecKey keyProperty="id" order="BEFORE" resultType="int"> select user_sequence.nextval form dual </selectKey> </insert> 上述属性介绍: keyProperty=&

就mybatis中pagehelper(分页助手)谈谈自己的个人理解及操作

第一我们需要用到这个pagehelper需要引入这个助手的jar包这个就需要我们在官网搜索pagehelper这个助手当然我个人在这里写下详细的步骤 打开官网 https://pagehelper.github.io/或者在百度搜索pagehelper 点击 vIew on Github 找到下面pagehelper 中文版文档  点击如何使用pagehelper  找到里面的jar所在位置 (其中俩个jar包不匹配容易出现版本冲突导致出现一堆小编都看不懂的错误所以可以下载下面的,经实际检验可以

Mybatis中oracle、mysql、db2、sql server的like模糊查询

<!-- oracle --> <select id="searchUserBySearchName" parameterType="java.lang.String" resultType="com.urm.entity.User"> select * from t_user where user_name like CONCAT('%',#{search_name},'%') </select> <!

.NET中的repeater分页效果

Repeater分页,需要依靠PagedDataSource.这个类存在于System.Web.UI.WebControls命名空间.它的作用是作为数据源与数据显示控件的中间介质. 前台代码: <body> <asp:Repeater ID="Repeater1" runat="server"> <HeaderTemplate> <p style="background-color:#988c6e;width:40

Mybatis中实现mysql分页写法!!注意

1. ?不允许在关键字前后进行数学运算,需要在代码中计算完成后传递到mapper.xml中 原文地址:https://www.cnblogs.com/yikuan-919/p/9691719.html

mybatis中的oracle和mysql分页

这段时间一直在用mybatis+spring+springMVC的框架,总结点东西吧. mybatis的oracle分页写法: <?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&quo

Java中oracle分页查询01

在数据库汇中的查询语句:oracle中使用rownum进行分页,从每页在总记录数的第n条到第m条:这里的是每页10条记录,下面sql所查询的是第页的记录数:oracle的分页是从1开始的,这里写成rownum>=0,rownum<=9,查询的记录是9条. SELECT * FROM (SELECT ROW_.*, ROWNUM ROWNUM_ FROM (SELECT * FROM TABLE1 WHERE TABLE1_ID = XX ORDER BY GMT_CREATE DESC) RO

mybatis中mysql和oracle的差异

1.applicationContext.xml中的配置差异: 在applicationContext.xml的数据源dataSource的配置中,mysql数据库需要心跳包的配置,而oracle中不需要,否则会报错 2.mybatis模糊查询中sql语句的差异 mysql在使用concat拼接字符串时可以直接将三者[%.占位符.%]拼到一起,而oracle则不可以,必须两两拼接,否则就会报ORA-00909: 参数个数无效的错误 mysql: <select id="selectUser