//===============================================================生成游标的方法
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. 手撕HashMap

    前言: 平时工作的时候,用的最多的就是ArrayList和HashMap了,今天看了遍HashMap的源码,决定自己手写一遍HashMap. 一.创建MyHashMap接口       我们首先创建一 ...

  2. 第15.27节 PyQt(Python+Qt)入门学习:Model/View架构中的便利类QTreeWidget详解

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.引言 树部件(Tree Widget)是Qt Designer中 Item Widgets(It ...

  3. Asp.net core中RedisMQ的简单应用

    最近一个外部的项目,使用到了消息队列,本来是用rabbitmq实现的,但是由于是部署到别人家的服务器上,想尽量简化一些,项目中本来也要接入了redis缓存,就尝试使用redis来实现简单的消息队列. ...

  4. Day3 Scrum 冲刺博客

    ·线上会议: 昨天已完成的工作与今天计划完成的工作及工作中遇到的困难: 成员姓名 昨天完成工作 今天计划完成的工作 工作中遇到的困难 纪昂学 创建一个Cell类,用来表示一个小方块 就创建一个Tetr ...

  5. 2020/12月最新WinSpy/WinSpy++下载exe

    >>>下载地址 https://wws.lanzous.com/iFUsVj931xa 密码:5hp7 解压密码:yunmuq 夹带私货:在这里希望大家分享文件别再用百度云了,不用百 ...

  6. centos7 mysql 自动补全

    1 yum -y install epel-release #配置erel源 2 yum -y install python-pip 3 pip install mycli #用pip安装 可能会出现 ...

  7. Python零散知识点记录

    1.关于setdefaultencoding之前必须reload(sys): 要在调用setdefaultencoding时必须要先reload一次sys模块,因为这里的import语句其实并不是sy ...

  8. Linux Vi进入编辑模式后使用方向键的时候,并不会使光标移动,而是在命令行中出现A、B、C、D四个字母

    在linux下,初始使用Vi的时候有两个典型的问题: 1.在编辑模式下使用方向键的时候,并不会使光标移动,而是在命令行中出现A.B.C.D四个字母: 2.当编辑出现错误,想要删除时,发现Backspa ...

  9. rancher安装,快速安装

    apt-get install docker.io docker -y docker run -d --restart=always -v /data/rancher_server:/var/lib/ ...

  10. 新手入门 : Windows Phone 8.1 开发 视频学习地址

    本视频资源来自Microsoft Virtual Academy http://www.microsoftvirtualacademy.com/ 下面为视频下载地址! 新手入门 : Windows P ...