游标数据练习java
//===============================================================生成游标的方法
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的更多相关文章
- 一种从JSON数据创建Java类的高效办法
<一种从JSON数据创建Java类的高效办法> 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs JSON格式的数据经常会遇到,比如调用Web服 ...
- 数据库数据在Java占用内存简单估算
数据库数据在Java占用内存简单估算 结论: 1.数据库记录放在JAVA里,用对象(ORM一般的处理方式)须要4倍左右的内存空间.用HashMap这样的KV保存须要10倍空间; 2.假设你主要数据是t ...
- JSON数据与Java对象的相互转换
JSON数据与Java对象的相互转换 JSON解析器 常见的解析器:Jsonlib .Gson. fastjson. jackson JSON转化为Java对象 使用步骤: 1.导入jackson的相 ...
- 暚光科技定位系统数据解析-java
暚光科技定位系统数据解析-java package com.ygkj.test; import java.io.DataInputStream; import java.io.IOException; ...
- 搞大数据,Java 工程师需要掌握哪些知识?
先看再点赞,给自己一点思考的时间,微信搜索[沉默王二]关注这个有颜值却假装靠才华苟且的程序员.本文 GitHub github.com/itwanger 已收录,里面还有一线大厂整理的面试题,以及我的 ...
- ajax提交数据到java后台,并且返回json格式数据前台接收处理值
1.前台html页面.有一段代码如下: 账 户: <input type="text" name="userName" id="userN& ...
- 使用Gson转换json数据为Java对象的一个例子
记录工作中碰到的一个内容. 原料是微信平台的一个接口json数据. { "errcode" : 0, "errmsg" : "ok", &q ...
- salesforce 零基础学习(三十三)通过REST方式访问外部数据以及JAVA通过rest方式访问salesforce
本篇参考Trail教程: https://developer.salesforce.com/trailhead/force_com_dev_intermediate/apex_integration_ ...
- mongoDB 插入数据 用java实现
import java.net.UnknownHostException; import com.mongodb.BasicDBObject; import com.mongodb.DB; impor ...
随机推荐
- 浅谈JAVA servlet
1.servlet是什么? servlet的本质是接口,接口就是一种规范.我们来看一下servlet接口中都有哪些函数: 图片来源:https://www.cnblogs.com/whgk/p/639 ...
- 基于 MongoDB 动态字段设计的探索
一.业务需求 假设某学校课程系统,不同专业课程不同 (可以动态增删),但是需要根据专业不同显示该专业学生的各科课程的成绩,如下: 专业 姓名 高等数学 数据结构 计算机 张三 90 85 计算机 李四 ...
- 阿里云ECS服务器连接MongoDB
第一次接触MongoDB,第一次部署.将一些步骤整理出来,希望以后会用到,也希望能帮组到有这方面需求的小伙伴. 设备说明: 服务器为阿里云ECS服务器,网络为专有网络VPC,Mango为买的阿里云Ma ...
- Python中字符串使用单引号、双引号标识和三引号标识,什么是三引号?什么情况下用哪种标识?
一.三引号是指三个单引号或者三个双引号: 二.Python中字符串如果以单引号.双引号标识和三引号标识开头,则字符串结尾也必须是对应的标识,不能变更: 三.三者的异同: 1.三者都是字符串,大部分情况 ...
- PyQt学习随笔:Model/View设计中支持View中展示数据的排序
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 在model/view架构中,有两种方法可以实现排序,选择哪种方法依赖于底层Model.如果mode ...
- 第15.8节 PyQt入门学习:Designer的界面功能介绍
进入Qt Designer以后,打开或新建一个ui文件,Qt Designer窗口展示的页面如下图所示: 老猿将界面各部分使用红色数字进行标记,按照数字顺序各区域对应功能分别为: 1.界面元素控件区域 ...
- PyQt(Python+Qt)学习随笔:Qt Designer中部件的locale属性
locale属性用于设置语言环境,包括语言和国家.如果一个部件没有设置语言环境,则使用父对象的语言环境或者默认语言环境(如果这个部件是顶层部件). 可以使用locale()获取部件的语言环境,也可以通 ...
- Windows下MySQL无法启动万能解决方案
MySQL启动报错 window10上安装了MySQL之前使用都是执行net start mysql 启动,执行net stop mysql关闭. 某天开始启动报错"MySQL 服务无法启动 ...
- 中间件面试专题:kafka高频面试问题
- Trie 练习记录
蒟蒻以前写的逊爆讲解 Trie CF665E Beautiful Subarrays 代码 把之前每个前缀和放进 trie 树里,然后 trie 树上查询即可. CF37C Old Berland L ...