当前位置:首页 » 存储配置 » ibatis存储过程

ibatis存储过程

发布时间: 2022-05-04 11:33:40

‘壹’ ibatis调用返回游标的存储过程,没有输入参数的

<parameterMap type="map" id="LeaveApplyDetailMap">
<parameter property="resultCode" jdbcType="VARCHAR" javaType="java.lang.String" mode="OUT"/>
<parameter property="resultData" jdbcType="VARCHAR" javaType="java.lang.String" mode="OUT"/>
</parameterMap>

<!-- 检查请假日期是否有效 -->
<select id="LeaveCheck" parameterMap="LeaveApplyDetailMap">
CALL PKG_ATT.SP_Get_LeaveCheck(#{strEmployeeNo},#{beginDate},#{endDate},#{typeNo},#{resultCode},#{resultData})
</select>

‘贰’ spring+ibatis 调用Oracle存储过程出错

jdbcType应该采用标准的数据类型,varchar2是oracle自定义的,非标准的。

改成 jdbcType="VARCHAR" 再试试

‘叁’ ibatis调用ms sqlSERVER 存储过程结果集

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-2.dtd">

<sqlMap namespace="UserDaoSqlMap">

<typeAlias alias="user" type="org.kylin.emap.bean.UserBean"/>

<resultMap id="userResultMap" class="user">
<result property="id" column="id"/>
<result property="loginName" column="login_name"/>
<result property="loginPasswd" column="login_passwd"/>
<result property="name" column="name"/>
<result property="sex" column="sex"/>
<result property="phone" column="phone" typeHandler="org.kylin.emap.util.ibatis.PgsqlStringArrayTypeHandler"/>
<result property="privilege" column="privilege" typeHandler="org.kylin.emap.util.ibatis.PgsqlIntegerArrayTypeHandler"/>
</resultMap>

<parameterMap id="loginUserParameters" class="java.util.HashMap">
<parameter property="result" jdbcType="OTHER" javaType="java.sql.ResultSet" mode="OUT"/>
<parameter property="loginName" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/>
<parameter property="loginPasswd" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/>
</parameterMap>

<select id="checkUser" resultMap="userResultMap" parameterClass="user">
SELECT id, login_name, login_passwd, name, sex, phone, privilege
FROM t_user
WHERE login_name = #loginName# AND login_passwd = #loginPasswd#
</select>

<procere id="loginUser" resultMap="userResultMap" parameterMap="loginUserParameters" >
{? = call f_login_user(?,?)}
</procere>

</sqlMap>

在userResultMap中有typeHandler的描述,如phone字段,用org.kylin.emap.util.ibatis.PgsqlStringArrayTypeHandler这个类来处理数组类型,这个类是实现了iBatis的com.ibatis.sqlmap.client.extensions.TypeHandlerCallback,iBatis是很强啊,很方便扩展。

先看procere的定义,用到了loginUserParameters做参数,返回userResultMap。
loginUserParameters描述了3个参数,按照调用方式: ? = call f_login_user(?, ?)的顺序,第一个参数是返回结果集的,这里的jdbcType填写OTHER,javaType填写java.sql.ResultSet,如果是ORACLE的存储过程通过游标返回结果集的话,jdbcType应该填写为ORACLECURSOR,看来iBatis专门为ORACLE做了开发,不过在PostgreSQL中不能用ORACLECURSOR,得用OTHER。

好了,现在我们看看DAO中如何通过SqlMapClient得到这个结果集:
public UserBean loginUser(String loginName, String loginPasswd) throws DaoException {

HashMap<String, String> parameters = new HashMap<String, String>();
parameters.put("loginName", loginName);
parameters.put("loginPasswd", loginPasswd);
return (UserBean)getSqlMapClientTemplate().queryForObject("UserDaoSqlMap.loginUser", parameters);
}

当前这个例子,存储过程通过游标返回了一行数据,我们可以用queryForObject得到结果集,结果集也自动影射为UserBean了,很方便使用。

‘肆’ ibatis调用oracle存储过程返回结果为boolean的问题

<parameter property="retBool" jdbcType="boolean" javaType="java.lang.Boolean" mode="INOUT"/>
应该是布尔型的 参数类型冲突 你该下试试谢谢

‘伍’ ibatis调存储过程,出现数组越界错误,怎么改

你可以把调用存储过程时的那个proDto参数改为HashMap尝试一下埃map里面put一个name为PRM_IDCARD然后在put一个PRM_NAME两个参数进去,,调用完成后获取PRM_NAME试试。

‘陆’ ibatis调用mysql存储过程,没有结果集返回,求高手求救

calltotalUsers(?,?,?,?)

有问题吧?

改为

calltotalUsers(#{key1},#{key2},#{key3},#{key4})

key1~key4为paramMap里对应的键值

‘柒’ ibatis 存储过程的 查询

queryForList返回的是List,queryForObject返回的是Object;
to LS:ibatis可以调用存储过程。

‘捌’ 封装的ibatis怎么调用oracle存储过程入参

在cx_oracle 中定义一个参数比如 rec_data TBL_MY_OBJECT; 然后给予赋值 比如 rec_data.id =XXX;rec_data .DATA =XXX; 然后调用INIT_MY_TYPE(rec_data );即可。

‘玖’ mybatis和ibatis的区别

1、基本信息不同

mybatis:MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。

MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。

ibatis:iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO),同时还提供一个利用这个框架开发的JPetStore实例。相对Hibernate和ApacheOJB等“一站式”ORM解决方案而言,ibatis 是一种“半自动化”的ORM实现。

iBATIS 目前提供了三种语言实现的版本,包括:Java、.NET以及Ruby。

2、开发时间不同

mybatis:MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。

ibatis:iBATIS一词来源于“internet”和“abatis”的组合,是一个由Clinton Begin在2001年发起的开放源代码项目。

3、配置方法不同

mybatis简化了编码的过程,不需要去写的实现类,直接写一个的接口,再写一个xml配置文件,整个mybatis就配置好了,也就是数据库就连接好了,然后在service里面直接调用就可以了,但是ibatis则不可以,必须要写的实现类。mybatis是ibatis的升级版本。

热点内容
android签名工具 发布:2024-11-17 17:43:05 浏览:574
酒店酒管软件服务器ip段 发布:2024-11-17 17:34:10 浏览:916
关系数据库关键字 发布:2024-11-17 17:20:12 浏览:307
微信脚本添加好友 发布:2024-11-17 17:19:59 浏览:566
不支持ftpovertls 发布:2024-11-17 17:15:05 浏览:229
腾讯下载视频加密 发布:2024-11-17 17:14:32 浏览:901
手机站源码下载 发布:2024-11-17 17:12:17 浏览:147
root密码忘记了怎么办 发布:2024-11-17 17:08:08 浏览:141
摩斯密码V代表什么 发布:2024-11-17 16:58:34 浏览:384
微信表情压缩 发布:2024-11-17 16:49:30 浏览:165