Mybatis学习:操作存储过程与返回数值类型

需积分: 9 2 下载量 170 浏览量 更新于2024-09-11 收藏 70KB DOC 举报
在MyBatis的学习笔记中,我们将探讨如何使用MyBatis操作存储过程,特别是当涉及到处理返回值类型为number的数据时。首先,我们来看一个存储过程示例,名为`pro_save_emp`,用于向`emp_info`表中插入一条记录,并提供了一个条件语句来处理异常。该存储过程接收五个输入参数:route_number(routnumber)、emp_no(varchar2类型),ename(varchar2)、salary(salnumber)和job(varchar2),并且使用`insert`语句执行操作,如果遇到其他异常则回滚事务并设置结果变量r为0。 接下来,是与这个存储过程相关的MyBatis映射文件部分。在这里,创建了一个`parameterMap`,名为`pm`,用于将Java对象中的属性映射到存储过程的输入参数上。`pm`定义了五个参数,其中`r`是作为out参数,表示存储过程会改变的值(类型为`DOUBLE`或`int`),其他四个参数(empno、ename、sal和job)则是in参数,对应Java类型分别是`int`、`String`和`double`。 `selectId`方法`save_pro`是MyBatis用来执行存储过程的关键部分,它设置了`resultType`为`int`,表明存储过程将返回一个整数值,同时指定了`parameterMap`为`pm`。调用存储过程的SQL语句是`callpro_save_emp(?,?,?,?,?)`,这里的问号代表参数占位符,将在运行时被实际的参数值替换。 测试代码部分展示了如何通过`SqlSession`执行这个存储过程。创建了一个`Map`对象`map`,初始化了输入参数,其中`r`被设置为-1,其他字段值符合预期。然后,通过调用`session.selectOne(stmt, map)`来执行存储过程,其中`stmt`是保存了Mapper接口方法名的字符串。 这部分内容主要讲解了如何在MyBatis中利用存储过程进行数据操作,包括创建存储过程、配置参数映射以及在业务代码中调用存储过程进行数据保存,并能处理可能的异常情况。这在处理复杂数据库逻辑和确保数据一致性方面是非常有用的。学习和掌握这些概念对于在实际开发中有效利用MyBatis进行数据库操作至关重要。