精华内容
下载资源
问答
  • mybatis oracle分页sql

    2014-09-15 16:20:00
    以前在写oracle分页时的sql是: (1) select * from (select a.*, rownum rnum from (select id, data from t order by id, rowid) a ) where rnum >= 148 and rnum; 或者 (2) select * from...

    以前在写oracle分页时的sql是:

    (1)

    select *
        from  (select a.*, rownum rnum
         from (select id, data
         from t  order by id, rowid) a
        )
       where rnum >= 148 and rnum<=151;


    或者

    (2)
    select *
        from  (select a.*, rownum rnum
         from (select id, data
         from t  order by id, rowid) a
        where rownum <= 151 )
       where rnum >= 148;

    最近在开发中同事说第(1)种效率不好,而第(2)种在只有唯一值(列)的时间才能正常排序,以前一直用第(1)种,今天同事找到如下的方式,解决了 第(2)种唯一值(列)排序的问题,如下:

    (3)

    select *
        from  (select a.*, rownum rnum
         from (select id, data
         from t  order by id, rowid) a
        where rownum <= 151 )
       where rnum >= 148;

    PS:主要是添加了rowid这个字段。

    参考网站:http://www.oracle.com/technetwork/issue-archive/2006/06-sep/o56asktom-086197.html

    转载于:https://my.oschina.net/xiaoyang818/blog/313766

    展开全文
  • 默认情况下,使用#{}格式的语法会导致mybatis创建预处理语句属性并以它为背景设置安全的值(比如?)。这样做很安全,很迅速也是首选做法,有时你只是想直接在sql语句中插入一个不改变的字符串。比如,像order by,你...


     bug:

    使用参数绑定的方式进行查询,查询语句如下:


    @Select("SELECT * FROM   (  

    SELECT A.*, ROWNUM rn   FROM (

    SELECT  *  FROM xxxxxtable   order by #{parameter} desc )  A   "
    + "WHERE ROWNUM <= #{end}  )  WHERE rn >= #{start} ")


    但是测试时发现排序顺序不对,继续测试,发现其实根本没有按照parameter所代表的字段进行排序。


    解决:

    使用${}进行参数绑定  即将  #{parameter} 改为 ${parameter}



    参考:

    mybatis排序时使用order by 动态参数时需要注意,用$而不是#
    默认情况下,使用#{}格式的语法会导致mybatis创建预处理语句属性并以它为背景设置安全的值(比如?)。这样做很安全,很迅速也是首选做法,有时你只是想直接在sql语句中插入一个不改变的字符串。比如,像order by,你可以这样来使用:
    order by ${columnname}
    这里mybatis不会修改或转义字符串。
    重要:接受从用户输出的内容并提供给语句中不变的字符串,这样做是不安全的。这会导致潜在的sql注入攻击,因此你不应该允许用户输入这些字段,或者通常自行转义并检查。

    原文链接 : 点击打开链接



    展开全文
  • 我们都知道mysql分页很...但是oracle分页有点特殊,下面给出两种oracle分页mapper文件的写法,功能和上面mysql分页相同,可以互相转化。 1.第一种 CDATA方式 <select id="selectAllByPage" resultMap="BaseRes...

    我们都知道mysql分页很简单,limit语句即可。

    select * from student limit pageNo,pageSize
    

    但是oracle分页有点特殊,下面给出两种oracle分页mapper文件的写法,功能和上面mysql分页相同,可以互相转化。
    1.第一种 CDATA方式

    <select id="selectAllByPage" resultMap="BaseResultMap" parameterType="map">
    	select * from (select TMP_PAGE.*,ROWNUM ROW_ID from (
    	select * from student
    	<if test="pageNo!=null and pageSize!=null">
    	<![CDATA[)TMP_PAGE) where ROW_ID <=${pageSize*pageNo} AND ROW_ID > ${pageSize*(pageNo-1)}]]>
    	</if>
    </select>
    

    2.第二种方式

    <select id="selectAllByPage" resultMap="BaseResultMap" parameterType="map">
    	select * from 
    	<choose>
    			<when test="pageNo!=null and pageSize!=null">
    				(select t1.*,rownum rn from
    				(select * from student
    				<where>
    						<if test="country!=null">
    						country=#{country,jdbc=VARCHAR}
    						</if>
    				</where>
    			)t1
    			where rownum<=(#{pageNo,jdbc=INTEGER}*#{pageSize,jdbc=INTEGER})
    			where rn>(#{pageNo,jdbc=INTEGER}-1)*#{pageSize,jdbc=INTEGER}
    			<when>
    			<otherwise>
    			student
    			</otherwish>
    	</choose>
    </select>
    
    展开全文
  • Mybatis实现Oracle 分页

    千次阅读 2019-09-01 00:01:42
    Mybatis+Oracle 分页 1,使用mybatis的插件PageHelper (1)Mapper.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...

    Mybatis+Oracle 分页

    1,使用mybatis的插件PageHelper

    (1)Mapper.xml

    <?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">
    <!-- namespace:填写的是监听的Mapper权限命名的接口 -->
    <mapper namespace="cn.ssm.dao.StudentMapper">
    	<select id="selectUserinfo"  resultType="cn.ssm.dao.bean.Userinfo">
    	    select *  from userinfo
    	</select>
    </mapper>

    (2)分页实现

    	  public List<Userinfo> selectUserinfo() {
    	 	  PageHelper.startPage(2, 3); //使用分页插件
    		  List<Userinfo> userinfos =studentMapper.selectUserinfo();
    		  PageInfo<Userinfo> infos=new PageInfo<Userinfo>(userinfos); 
    		  List<Userinfo> list = infos.getList(); 
    		  return userinfos; 
    	  }

    2,使用利用 rownum这个字段,oracle 数据库中特有的字段

    (1)Mapper.xml

    <?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">
    <!-- namespace:填写的是监听的Mapper权限命名的接口 -->
    <mapper namespace="cn.ssm.dao.StudentMapper">
     <select id="selectUserinfo" parameterType="cn.ssm.dao.bean.Userinfo" resultType="cn.ssm.dao.bean.Userinfo">
          select * from ( select row_.*, rownum rownum_ from ( select * from  userinfo ) row_ 
          where rownum &lt;=  #{pageNum} * #{pageSize} ) where rownum_ &gt;  (#{pageNum} - 1) * #{pageSize}
      </select>
    </mapper>

    (2)分页实现

    public class Userinfo {
    	private int id;
    	private String name;
    	private String password;
    	private Integer pageNum;
    	private Integer pageSize;
    }
    	public List<Userinfo> selectUserinfo() {
    		Userinfo user=new Userinfo();
    				user.setPageNum(2);//设置当前为第2页
    				user.setPageSize(3);//设置每页总共3条数据
    		List<Userinfo> userinfos = studentMapper.selectUserinfo(user);
    		return userinfos;
    	}

    结果展示:


    例子:select * from (select t.*,rownum r from (select * from A) t where rownum < 10)where r >5
    第一层:select * from A:要查询的数据
    第二层:select t.*,rownum r from (select * from A) t where rownum < 10:取前 10 行
    第三层:select * from (select t.*,rownum r from (select * from A) t where rownum < 10)where r >5:取 5-10 行


    说明: select * from ( select row_.*, rownum rownum_ from ( select * from  userinfo ) row_  where rownum <=  #{pageNum} * #{pageSize} )a where rownum_ >  ( #{pageNum}- 1) * #{pageSize}
          
     解析:先查询select * from  userinfo 总条数并起个别名 row_,
            然后查询select row_.*, rownum rownum_ from ( select * from  userinfo ) row_  where rownum <=  #{pageNum} * #{pageSize} ,把所有数据和rownum固定字段列查询并起别名,
            最后从a中查询出想要的数据,主要是使用rownum固定字段列筛选实现分页 where rownum_ >  ( #{pageNum}- 1) * #{pageSize}


    小于号:&lt;

    大于号:&gt;

     

     

    展开全文
  • Mybatis使用Oracle分页

    千次阅读 2018-08-16 17:13:51
    Mybatis使用Oracle分页 一、 pageResult public class PageResult { private List dataList; private int page;// 当前页 private int pageSize; private int total;// 数据总数 private int totalPage;// 总....
  • 分页sql //方式一 select * from (select temporary1.*, Rownum as rowno from ( select * from sys_user) temporary1 ) temporary2 where temporary2.rowno >= (1 - 1) *10 +1 and temporary2.rowno <=...
  • MyBatis Oracle分页写法

    千次阅读 2019-01-09 15:31:04
    简单粗暴,参考即可,不喜勿喷。 <select id="findByPage" resultMap="BaseResultMap" parameterType="Map"> select * from (select t1.*,rownum rn from (select * from tableName ...
  • MyBatis 实现 Oracle 分页

    2018-04-10 10:02:29
    MyBatis 实现 Oracle 分页 &lt; 是 < &lt;= 是 <= <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...
  • oraclemybatis实现分页,用oracle自带的分页效果 select * from ( select t.USERNAME,rownum rn from ( select * from USER ) t WHERE ROWNUM <= '9' ) WHERE RN > '6' ; 分解解释 1 select *...
  • MyBatis 的 MySQL、Oracle 分页插件,使用相同的分页接口。   ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 ...
  • oracle mybatis 排序 分页

    千次阅读 2018-03-14 11:03:37
    &lt;select id="queryFarmerInfoListByListId" resultMap="FarmerInfoResultMap"&gt; select * from(select rownum r, id_aims_list_info, id_aims_framer_info, ...
  • MyBatis Oracle与MySQL分页

    2014-11-25 11:14:55
    Oracle、MySQL分页实例 SQL执行代码 ORACLE: SELECT * FROM ( SELECT ROWNUM AS NUMROW, Z.* from ( select * from CHANNEL T where 1=1 and T.ID = 1 ORDER BY T.ID desc ) Z where rownum&lt;=10...
  • MyBatis 的 MySQL、Oracle 分页插件,使用相同的分页接口。/*** 分页对象*/public final class Page implements Serializable {/*** 默认的序列化版本 id.*/private static final long serialVersionUID = 1L;/*** ...
  • oracle 配合mybatis example分页

    千次阅读 2017-10-09 16:11:06
    mybatis逆向生成的xml 内增加 分页 select from( (select rownum rn,uo.* from (select * from mytable order by ${example.orderByClause} ) uo where rownum ))
  • 关于MyBatis的搭建可以参见“MyBatis的配置”,MyBatis是对JDBC底层代码的封装,关于Oracle、MySQL、SqlServer的分页可以查看Oracle、SqlServer、MySQL的分页MyBatis自带分页 关于分页,笔者首先使用MyBatis...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 721
精华内容 288
热门标签
关键字:

mybatisoracle分页