zoukankan      html  css  js  c++  java
  • 游标数据练习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+"结果为》》》");

  • 相关阅读:
    利用Spring AOP自定义注解解决日志和签名校验
    SpringBoot返回date日期格式化,解决返回为TIMESTAMP时间戳格式或8小时时间差
    @RequestBody配合@JsonFormat注解实现字符串自动转换成Date
    Mysql的时间类型问题
    IntelliJ IDEA使用maven-javadoc-plugin生成Java Doc控制台乱码
    Maven学习笔记(十二)-maven打包之resource配置
    SpringBoot使用@Value从yml文件取值为空--注入静态变量
    cloud server ribbon 自定义策略配置
    JNA 如何 加载多个 存在依赖的 DLL 库
    Remote Desktop File Format
  • 原文地址:https://www.cnblogs.com/xianz666/p/12035199.html
Copyright © 2011-2022 走看看