javaEE--ibatis--Sping+flex4 调用存储过程返回List结果集
来源:互联网 发布:java上传图片到tomcat 编辑:程序博客网 时间:2024/05/22 08:16
1. 这段时间在看存储过程的优劣性并尝试提高程序的运行性能,
存储过程能够:
a:降低网络流量
b:执行计划,存储过程在首次执行是将产生一个执行计划。
c:使用存储过程能够增强对执行计划的重复使用,从而也可以通过使用远程过程调用RPC处理服务器上的存储过程而提高性能,RPC封装参数和调用服务器端过程的方式使引擎能够轻松地找到匹配的执行计划,并只需插入更新的参数值。
d:可维护性高,更新存储过程比更改、测试以及重新部署程序集需要的时间少。
e:代码精简一直,一个存储过程可以用于程序代码的不同位置。
f:更好的版本控制,可以轻松的回复和更新存储过程的引用。
g:安全性更高,能有效防止sql注入。除了DML附带的sql参数。
缺点:
可移植性差,不善维护,代码可读性不强,无法采用面向对象的思想对存储过程进行封装设计,从而无法形成可复用的业务逻辑框架。
2. 看了下优缺点,然后来简单的调用下存储过程,学习开始了...... 以前还没怎么用过存储过程。
环境:J2EE+Ibatis2+Flex4 +Spring
接下来直接进入主题,看下Java通过Ibatis调用存储过程并返回结果的关键例子。
存储过程:
create or replace
PROCEDURE METERLISTPRO
(
ML OUT SYS_REFCURSOR ,
SZ OUT INTEGER
) AS
BEGIN
OPEN ML FOR SELECT * FROM METERINFO;
EXECUTE IMMEDIATE 'SELECT COUNT(*) FROM METERINFO ' INTO SZ;
END METERLISTPRO;create or replace
PROCEDURE SYSDATAFUNC
(
nowtime OUT DATE
) AS
seledate Date;
BEGIN
execute immediate 'select sysdate from dual ' into nowtime;
END SYSDATAFUNC;sqlMap配置文件:
<parameterMap id="dd" class="map">
<parameter property="nowtime" javaType="java.util.Date" jdbcType="TIMESTAMP" mode="OUT" />
</parameterMap>
<procedure id="sysDateProcdure" parameterMap="dd" >
<![CDATA[
{CALL SYSDATAfUNC(?)}
]]>
</procedure>
<typeAlias alias="meterinfo" type="com.roy.beans.Meterinfo"/>
<resultMap class="com.roy.beans.Meterinfo" id="meterinfoMap">
<result property="meterid" column="meterid" />
<result property="rtuid" column="rtuid" />
<result property="deviceno" column="deviceno" />
<result property="meterno" column="meterno" />
<result property="metertype" column="metertype" />
<result property="meteradd" column="meteradd" />
<result property="meteropenedtime" column="meteropenedtime" />
<result property="metergasclass" column="metergasclass" />
<result property="meterinitscale" column="meterinitscale" />
<result property="meterfluxchannelno" column="meterfluxchannelno" />
<result property="metervalvechannelno" column="metervalvechannelno" />
<result property="meterinstalltime" column="meterinstalltime" />
<result property="metermaxflux" column="metermaxflux" />
<result property="meterminflux" column="meterminflux" />
<result property="changeflag" column="changeflag" />
<result property="spareflag" column="spareflag" />
<result property="newflag" column="newflag" />
<result property="maxvalue" column="maxvalue" />
<result property="minvalue" column="minvalue" />
<result property="modelno" column="modelno" />
<result property="tsyhbm" column="tsyhbm" />
<result property="valveflag" column="valveflag" />
<result property="fluxflag" column="fluxflag" />
<result property="testflag" column="testflag" />
<result property="maxtemp" column="maxtemp" />
<result property="mintemp" column="mintemp" />
<result property="maxpress" column="maxpress" />
<result property="minpress" column="minpress" />
<result property="factoryno" column="factoryno" />
<result property="measurementtype" column="measurementtype" />
<result property="pitno" column="pitno" />
<result property="unitid" column="unitid" />
<result property="areaid" column="areaid" />
<result property="pwno" column="pwno" />
<result property="serialno" column="serialno" />
<result property="gelimodelno" column="gelimodelno" />
<result property="pressunit" column="pressunit" />
<result property="meterlevel" column="meterlevel" />
<result property="presstype" column="presstype" />
</resultMap>
<parameterMap class="java.util.HashMap" id="pm">
<parameter property="ml" jdbcType="ORACLECURSOR" javaType="java.sql.ResultSet" resultMap="meterinfoMap" mode="OUT"/>
<parameter property="sz" jdbcType="INTEGER" javaType="java.lang.Integer" mode="OUT"/>
</parameterMap>
<procedure id="meterlist" parameterMap="pm" >
<![CDATA[
{CALL METERLISTPRO(?,?)}
]]>
</procedure>方法调用实现类:
public Date getSysDate() {
Date d = null;
Map map = new HashMap();
try {
this.getSqlMapClientTemplate().queryForObject("testnsp.sysDateProcdure",map);
d = (Date)map.get("nowtime");
} catch (DataAccessException e) {
e.printStackTrace();
}
return d;
}@Override
public Map procedureList() {
Map mapm = new HashMap();
try {
this.getSqlMapClientTemplate().queryForList("testnsp.meterlist",mapm);
} catch (DataAccessException e) {
e.printStackTrace();
}
return mapm;
}到此结束了。程序源码下载:到本人资源进行下载!http://download.csdn.net/detail/roy_bird/4608211
- javaEE--ibatis--Sping+flex4 调用存储过程返回List结果集
- iBatis 调用 存储过程返回结果集
- ssh调用存储过程,并返回list结果集
- myabatis oracle 调用存储过程返回list结果集
- IBatis调用ORACLE的存储过程、函数的返回结果集例子
- Ibatis调用Oracle存储过程,以及返回Cursor结果集的处理
- php调用存储过程返回结果集
- php调用存储过程返回结果集
- 调用Oracle存储过程返回结果集
- 存储过程返回结果集,以及调用
- java调用存储过程,返回结果集
- thinkphp调用存储过程返回结果集
- java调用存储过程返回结果集
- 存储过程调用 遍历返回结果集
- MyBatis调用存储过程返回结果集
- 调用存储过程和返回结果集
- 【转】ibatis中mysql存储过程返回结果集
- ibatis中mysql存储过程返回结果集
- 开启apache的url rewrite模块
- p,&p,*p的区别
- 【算法题】二叉树的前序遍历(递归和非递归算法分析)
- jquery图片滚动效果插件SuperSlide1.2
- 如何更改struts中错误默认返回input InputConfig内methodName跟resultName的使用方法
- javaEE--ibatis--Sping+flex4 调用存储过程返回List结果集
- 监听输入框值的即时变化onpropertychange、oninput
- AudioManager学习
- 日语的商品购物与消费
- ABAddressBook & AddressBook UI 文件介绍(IOS开发)
- VC内存泄露检测之运行时库(CRT)
- WSA_FLAG_OVERLAPPED Is Needed for Non-Blocking Sockets
- 娱乐,C语言模拟C++虚函数多态性
- 日语的前卫服饰与时装