//===============================================================生成游标的方法
List menu=new ArrayList();

Map<String, String> param = new HashMap<String, String>();
param.put("usr_no", edb.getData("usr_no"));

edb.setData("tx_cd_first", edb.getData("gda.tx_cd"));
logger.info("设置sql参数开始");
Utils.setData(bizCtx, "usrNo",edb.getData("usr_no"));//参数名称对应mapper中sql中参数的名称例如:<select id="getMenus">
select distinct(a.func_no) menuid,c.menu_nm menuname, c.pmenu_no pmenu ,c.url,c.icon_nm icon from t_urm_funcrole a, t_urm_operrole b ,t_urm_menu c
where a.role_id = b.role_id and a.usr_no = b.usr_no and a.func_no = c.menu_no and a.sts = 1
and b.sts = 1 and c.sts = 1 and c.btn_flg =1 and b.usr_no = #{usrNo} and b.oper_no = #{usrOprNo} order by menuid
</select>
//id="getMenus"对应biz.xml文件中的id名称 相当于直接调用.xml文件
//select distinct(a.func_no)去除重复
//使用游标可以新建一个mapper.xml文件sql: <select id="getMenus">
select distinct(a.func_no) menuid,c.menu_nm menuname, c.pmenu_no pmenu ,c.url,c.icon_nm icon from t_urm_funcrole a, t_urm_operrole b ,t_urm_menu c
where a.role_id = b.role_id and a.usr_no = b.usr_no and a.func_no = c.menu_no and a.sts = 1
and b.sts = 1 and c.sts = 1 and c.btn_flg =1 and b.usr_no = #{usrNo} and b.oper_no = #{usrOprNo} order by menuid
</select>

Utils.setData(bizCtx, "usrOprNo",usrOprNo);
logger.info("设置usr_no="+edb.getData("usrNo"));//参数名称对应mapper中sql中参数的名称
logger.info("设置sql参数结束");
logger.info("开启游标:");
//开启游标==
PUBATCUtil.openCursor(bizCtx, "getMenus", "selectLblyb");//selectLblyb游标名称可以自己定义如:aa或者bb。getMenus 对应<select id="getMenus">sql中的id名称
logger.info("开启结束:");
int i=0;
while (true) {
//游标查询开始,查询的结果放在了edb中,"result"+i游标返回的结果+i使返回的结果值不同,可以自己任意定义result的名称
PUBATCUtil.fetchCursor(bizCtx, "selectLblyb", "result"+i);

logger.info("游标:"+i+"结果为"+Utils.eval(bizCtx, "~retcod=2")+"结果id为,"+edb.getData("result"+i+".menuid"));
//||edb.getData("result"+i+"id")==null||edb.getData("result"+i+"id").equals("")
//判断游标关闭条件
if (Utils.eval(bizCtx, "~retcod=2")||edb.getData("result"+i+".menuid")==null) {//Utils.eval(bizCtx, "~retcod=2"):游标返回的状态错误执行关闭。
//edb.getData("result"+i+".menuid")==null:游标中取不到值时关闭
logger.info("关闭游标:11");
//关闭游标的方法,游标用完必须关闭不然严重影响性能
PUBATCUtil.closeCursor(bizCtx, "selectLblyb");
logger.info("关闭游标:12");
break;
}else{
Map le=new HashMap();
le.put("menuid", edb.getData("result"+i+".menuid"));//.menuid对应sql中的字段名称 select distinct(a.func_no) menuid,c.menu_nm menuname, c.pmenu_no pmenu
le.put("menuname", edb.getData("result"+i+".menuname"));.menuname对应sql中的字段名称
le.put("pmenu", edb.getData("result"+i+".pmenu"));
le.put("url", edb.getData("result"+i+".url"));
le.put("icon", edb.getData("result"+i+".icon"));
menu.add(le);//map中的值添加到list集合中
i++;
}

}
logger.info("游标执行总数="+i+"结果为》》》");

游标数据练习java的更多相关文章

  1. 一种从JSON数据创建Java类的高效办法

    <一种从JSON数据创建Java类的高效办法> 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs JSON格式的数据经常会遇到,比如调用Web服 ...

  2. 数据库数据在Java占用内存简单估算

    数据库数据在Java占用内存简单估算 结论: 1.数据库记录放在JAVA里,用对象(ORM一般的处理方式)须要4倍左右的内存空间.用HashMap这样的KV保存须要10倍空间; 2.假设你主要数据是t ...

  3. JSON数据与Java对象的相互转换

    JSON数据与Java对象的相互转换 JSON解析器 常见的解析器:Jsonlib .Gson. fastjson. jackson JSON转化为Java对象 使用步骤: 1.导入jackson的相 ...

  4. 暚光科技定位系统数据解析-java

    暚光科技定位系统数据解析-java package com.ygkj.test; import java.io.DataInputStream; import java.io.IOException; ...

  5. 搞大数据,Java 工程师需要掌握哪些知识?

    先看再点赞,给自己一点思考的时间,微信搜索[沉默王二]关注这个有颜值却假装靠才华苟且的程序员.本文 GitHub github.com/itwanger 已收录,里面还有一线大厂整理的面试题,以及我的 ...

  6. ajax提交数据到java后台,并且返回json格式数据前台接收处理值

    1.前台html页面.有一段代码如下: 账  户:  <input type="text" name="userName" id="userN& ...

  7. 使用Gson转换json数据为Java对象的一个例子

    记录工作中碰到的一个内容. 原料是微信平台的一个接口json数据. { "errcode" : 0, "errmsg" : "ok", &q ...

  8. salesforce 零基础学习(三十三)通过REST方式访问外部数据以及JAVA通过rest方式访问salesforce

    本篇参考Trail教程: https://developer.salesforce.com/trailhead/force_com_dev_intermediate/apex_integration_ ...

  9. mongoDB 插入数据 用java实现

    import java.net.UnknownHostException; import com.mongodb.BasicDBObject; import com.mongodb.DB; impor ...

随机推荐

  1. Linux|CentOS下配置Maven环境

    1.下载maven包 wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven ...

  2. 老猿学5G:多量纲计费与QoS的QCI、5QI、ARP、GBR和MBR

    ☞ ░ 前往老猿Python博文目录 ░ 一.多量纲计费 多量纲计费是与传统的计费模式相区别的一种计费模式,传统的计费基本上都是通过使用量.使用时长或包固定时长等方式计费,而多量纲计费是指在考虑以上方 ...

  3. Python+moviepy使用manual_tracking和headblur函数10行代码实现视频人脸追踪打马赛克

    ☞ ░ 前往老猿Python博文目录 ░ 一.背景知识 1.1.headblur简介 追踪人脸打马赛克需要使用headblur函数. 调用语法: headblur(clip,fx,fy,r_zone, ...

  4. PyQt(Python+Qt)学习随笔:基于项的项部件(Item Widgets(Item-Based))概述

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 Model/View架构中的视图部件是基于模型的项视图(Item Views(Model-Based ...

  5. PyQt(Python+Qt)学习随笔:QListView的itemAlignment属性

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 QListView的itemAlignment属性用于控制每个数据项的对齐方式,其类型为枚举类Qt. ...

  6. PyQt(Python+Qt)学习随笔:QAbstractItemView的dragEnabled属性的困惑

    老猿Python博文目录 老猿Python博客地址 dragEnabled属性用于控制视图是否支持拖拽,可以通过dragEnabled().setDragEnabled(bool enable)进行属 ...

  7. PyQt(Python+Qt)学习随笔:Qt Designer中连接Action和槽函数

    在Designer中试了半天,终于找到了Action添加槽函数的方法,操作步骤: 在Designer右边界面中点击鼠标右键 确保信号/槽编辑被勾选,如图是未勾选的情况:. 勾选后会出现信号和槽的编辑界 ...

  8. js- 判断属性是否 属于该对象 hasOwnProperty()

    var obj ={ name:'suan', sex :'male', age:150, height:185, characeter:true, _proto_:{ lastName:'susan ...

  9. nginx转发上传图片接口图片的时候,报错413

    我这边有一个接口是上传图片,使用nginx进行代理,上传大一点的图片,直接调用我的接口不会报错,但是调用nginx上传图片就会报错"413 Request Entity Too Large& ...

  10. .Net Core 学习之旅知乎版

    @[yuyue](.Net Core 学习之旅-.netCore Developer RoadMap) # .Net Core 学习之旅 随着.NET5.O 的正式推出,微软的VS大一统目的逐步成型, ...