oracle、游标相集合分页ch

    xiaoxiao2021-03-25  114

    一:实体类

    public class PowerBean implements Serializable{ /** */ private static final long serialVersionUID = 1L; private Integer ID;//主键id private String AREA_NAME;//区域名称 private String STATION_NAME;//站点名称 private String CP_NUMBER;//充电桩号 private String GUN_NO;//枪号 private String POWER_TYPE;//充电类型 private String VOLTAGE;//输入电压 private String ELECTRIC;//输入电流 private String SPOWER;//输入功率 private String ENERGY;//输入电能 private String CMODEL;//通讯方式 private String REPORT_TIME;//上报时间

    二:jsp页面

    <div class="pager"> <div class="btn-group">                     <button type="button" class="pageBtn " οnclick="fenye(1)"><i class="fa fa-step-backward"></i> </button>                      <button type="button" class="pageBtn " <c:if test="${pageNow>1}"> οnclick="fenye(${pageNow-1});"</c:if>><i class="fa fa-caret-left"></i> </button>                       <div class="form-group "> <select name="" class="form-control"> <option value="">${pageNow}</option> </select> </div>                                         <button type="button" class="pageBtn " <c:if test="${pageNow+1<=myPageCount}">οnclick="fenye(${pageNow+1});"</c:if>><i class="fa fa-caret-right"></i> </button>                     <button type="button" class="pageBtn " οnclick="fenye(${myPageCount})"><i class="fa fa-step-forward"></i> </button>                     <button type="button" class="pageBtn "><i class="fa fa-repeat" οnclick="refresh();"></i> </button>                     <span style="color: #00fbff;margin-left: 20px;">共有:${myrows}条记录,当前页面${pageNow}/${myPageCount}页</span>                 </div> </div> </div>

    三:@Controller

    @RequestMapping public ModelAndView list(PowerBean powerBean,String pageNow) { ModelAndView mv = new ModelAndView(); Map<String,Object> param=new HashMap<String, Object>(); param.put("area_name",powerBean.getAREA_NAME()); param.put("station_name",powerBean.getSTATION_NAME()); param.put("cp_number",powerBean.getCP_NUMBER()); if(pageNow==null||pageNow.isEmpty()){ pageNow="1"; } param.put("begin",((Integer.valueOf(pageNow)-1)*pageSize)); param.put("end",Integer.valueOf(pageNow)*pageSize); param.put("myrows",OracleTypes.NUMERIC); param.put("myPageCount",OracleTypes.NUMERIC); param.put("pageSize",pageSize); param.put("powers",OracleTypes.CURSOR); param.put("areas",OracleTypes.CURSOR); Map<String,Object>map=monitoringPowerService.findPowerBeans(param); // List<PowerBean> powerBeans=monitoringPowerService.findPowerBeans(param); mv.addObject("powerBean", powerBean); mv.addObject("powerBeans",map.get("powerBeans")); mv.addObject("areas",map.get("areas")); mv.addObject("myPageCount",map.get("myPageCount")); mv.addObject("myrows",map.get("myrows")); mv.addObject("pageNow",pageNow); mv.setViewName("system/monitoringRun/monitoring_power");   return mv; }

    四:mybatis.xml

     <resultMap type="powerBean" id="powerBeanMap">   <id property="ID" column="ID"/>   <result property="AREA_NAME" column="AREA_NAME"/>   <result property="STATION_NAME" column="STATION_NAME"/>   <result property="CP_NUMBER" column="CP_NUMBER"/>   <result property="GUN_NO" column="GUN_NO"/>   <result property="POWER_TYPE" column="POWER_TYPE"/>       <result property="VOLTAGE" column="VOLTAGE"/>   <result property="ELECTRIC" column="ELECTRIC"/>   <result property="SPOWER" column="SPOWER"/>   <result property="ENERGY" column="ENERGY"/>   <result property="CMODEL" column="CMODEL"/>   <result property="REPORT_TIME" column="REPORT_TIME"/>         </resultMap>    <select id="findPowerBeans" parameterType="java.util.Map" statementType="CALLABLE">     <![CDATA[ call fenyPower(#{areas,mode=OUT,jdbcType=CURSOR,javaType=java.sql.ResultSet,resultMap=powerBeanMap},               #{powers,mode=OUT,jdbcType=CURSOR,javaType=java.sql.ResultSet,resultMap=powerBeanMap},               #{area_name,mode=IN,jdbcType=VARCHAR},               #{station_name,mode=IN,jdbcType=VARCHAR},               #{cp_number,mode=IN,jdbcType=VARCHAR},               #{begin,mode=IN,jdbcType=NUMERIC},               #{end,mode=IN,jdbcType=NUMERIC},               #{myrows,mode=OUT,jdbcType=NUMERIC},               #{myPageCount,mode=OUT,jdbcType=NUMERIC},               #{pageSize,mode=IN,jdbcType=NUMERIC})  ]]>     </select>

    五:分页存储过程及游标

    create or replace procedure fenyPower (     areas out sys_refcursor,--返回areas结果集     powers out sys_refcursor,--返回powers结果集     area_name in varchar2,  --查询条件区域     station_name in varchar2, --查询条件站点     cp_number in varchar2,--查询条件充电桩号     v_start in number,  --开始显示记录条数     v_end in number,    --结束显示记录条数     myrows out number,--总记录数     myPageCount out number,--总页数     pageSize in number --每页显示10条 ) is v_sql varchar2(1000);--SQL语句 v_wherecase varchar2(300):='';  --查询条件 v_n number; --计算myPageCount用到数值赋值 begin   if area_name is not null then     v_wherecase:=' and area_name like %'||area_name||'%';   end if;   if station_name is not null then     v_wherecase:=v_wherecase||' and station_name like %'||station_name||'%';    end if;    if cp_number is not null then       v_wherecase:=v_wherecase||' and cp_number like %'||cp_number||'%';    end if;   v_sql:='select * from           (select t1.* ,rownum rn from(select * from monitoring_power where 1=1'||v_wherecase||' order by id desc) t1 where rownum<='|| v_end ||')           where rn>'|| v_start;           --打开游标,让游标指向结果集powers   open powers for v_sql;   --打开游标,让游标指向结果集areas   v_sql:='select distinct area_name from monitoring_power';   open areas for v_sql;   --计算myrows和myPageCount   --查询共有多少条记录   v_sql:='select count(*) from monitoring_power where 1=1'||v_wherecase;   execute immediate v_sql into myrows;   --计算myPageCount,统计多少页记录   if mod(myrows,pageSize)=0 then     myPageCount:=myrows/pageSize;   else     v_n:=round(myrows/pageSize);     if(v_n>myrows/pageSize) then       myPageCount:=v_n;      else        myPageCount:=round(myrows/pageSize)+1;      end if;   end if; end;

    转载请注明原文地址: https://ju.6miu.com/read-18803.html

    最新回复(0)