查询oralce数据库,排序分页给出

18 篇文章 1 订阅
3 篇文章 0 订阅

查询Oracle表,分页排序

描述

有一个请求查询oralce表,希望返回结果是排序分页给出。那么它和一般的mysql请求有何不同呢。

代码

1

   @ResponseBody
    @RequestMapping(value = "/xx/queryCustInfo",method = RequestMethod.POST,produces = "application/json; charset=utf-8")
    public JSONObject querySecurityCustInfo(@RequestBody String json, @RequestHeader(value="access_token") String access_token) {
        JSONObject resObject = new JSONObject(); 
        try {
            json = new String(json.getBytes(), Charset.forName("utf-8"));
            JSONObject jsonObject = JSONObject.parseObject(json);
            String mobile = jsonObject.getString("mobile");
            String PageCount = jsonObject.getString("PageCount");  //分页后一页多少条数据
            String PageLocate = jsonObject.getString("PageLocate"); //分页后的哪一页数据
            String OrderType = jsonObject.getString("OrderType");  

2

int startPage = pageSize * (pageNumber - 1) + 1;
		int endPage = startPage + pageSize;
String order;
		if(OrderType!=null && OrderType.equals("1")) {
			order = "asc";
		}
		else{
			order = "desc";
		}
 // oracle 查询分页  rownum 行数从1开始计数
		list = dao.querySecurityCustInfo(mobile,startPage,endPage,order);  //手机号,开始计数的是第几条,结束到第几条,排序

3

  @Select("<script>" +
           " Select * from " +
           " ( " +
           " SELECT row_number() over(order by KHH ${order}) num, KHH, KHMC, SJ  FROM xx.Table  where khzt = 0 " +
           " <when test='![请添加图片描述](https://img-blog.csdnimg.cn/17661fc35f294d64b85c44f3225ff1e2.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5o6o6I2Q54ix5L2gSm9uYWg=,size_20,color_FFFFFF,t_70,g_se,x_16)
!=null'>" +
           " AND SJ = #{mobile}" +
           " </when>" +
           " ) ct " +
           " <when test='Pages!=null and PageSize != null'> " +
           " where ct.num &gt;= #{Pages} and ct.num  &lt; #{PageSize} "+
           " </when> " +
           " </script>" )
   public  List<Map<String,String>> querySecurityCustInfo(@Param("mobile") String mobile,  @Param("Pages") Integer startPage,
                                                          @Param("PageSize") Integer endPage, @Param("order")String order
                                                          );

备注

处理分页排序,与sql的不同之处有两点。
1. 首先需要对查询结果加一个row_number() over ( order by KHH ${order} ) num 用来 分页。 不然无法做到取从第1条到第100条,也就是后面的ct,num >= 和 < 。
请添加图片描述

2. mysql表统计数据从0条开始取,oracle里的num要从1开始取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值