//===============================================================生成游标的方法
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. LaTeX文档的基本结构

    正文提纲的构建代码及注释: 显示效果: 目录结构与换行的代码及注释: 显示效果: 具体的有关的信息可以具体查看ctex文档,可以在导言区进行全局的设置,比如标题居中设置等.

  2. SQL优化之SELECT COUNT(*)

    前言 SQL优化之SQL 进阶技巧(上) SQL优化之SQL 进阶技巧(下)中提到使用以下 sql 会导致慢查询 SELECT COUNT(*) FROM SomeTable SELECT COUNT ...

  3. Fiddler 4 断点调试(修改response请求参数)

    1.选择测试链接 2. 2然后点击规则的Automatic Breakpoints 的 After Responses 3.然后重新发起请求并找到链接 4.然后修改数据 5.最终效果

  4. 关于Django的序列化问题。serializers

    在DRF框架里,ModelSerializers是一个重要的组件.大大的帮组我们节省了数据序列化的过程,真的可以说是良心产品.接手的这个项目用的Django,前人的代码都是手动序列化的,为了保证风格的 ...

  5. 老猿学5G扫盲贴:推荐三篇介绍HTTP2协议相关的文章

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 5G中的服务化接口调用都是基于HTTP2协议的,老 ...

  6. 老猿学5G随笔:5G系统构成

    5G系统(5G智能计费方案)简称5GS,由以下部分组成: 用户设备:User Equipment,简写UE,用户访问网络的设备 5G接入网:5G Access NetWork,简写为5G-AN,负责用 ...

  7. PyQt学习随笔:Model/View设计中支持View中展示数据的排序

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 在model/view架构中,有两种方法可以实现排序,选择哪种方法依赖于底层Model.如果mode ...

  8. PyQt(Python+Qt)学习随笔:Qt Designer中主窗口对象的animated属性

    animated属性用于设置在操作可浮动部件和工具栏时是否设置动画. 当一个可浮动部件或工具栏被拖到主窗口上时,主窗口将调整其内容,以显示浮动部件或工具栏应该放置的位置.设置此属性后主窗口将使用平滑动 ...

  9. 使用cmd制作图片木马

    我们可以使用windows下自带的cmd制作图片木马,配合文件包含漏洞可以达到getshell的目的 我们找到一张图片:kiss.jpg 如图: 写好一句话木马:chopper.php 将两者放在同一 ...

  10. BlueCMS代码审计

    BlueCMS版本号为:bluecms_v1.6_sp1 本地搭建环境后将源代码丢进seay源代码审计系统,开启本地web服务页面访问,大部分白盒+小部分黑盒审计 搭建好环境后第一步先检查是否有重装漏 ...