SpringBoot项目 MyBatis 调用Oracle存储过程
2021/6/16 19:21:16
本文主要是介绍SpringBoot项目 MyBatis 调用Oracle存储过程,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
本文主要说明mybatis调用oracle存储过程的两种方法(HashMap&Entity),创建oracle的表以及搭建springBoot项目过程已经忽略。
1.创建存储过程
1.1 oracle 数据库中表的格式如下图所示
1.2 存储过程要实现的要求:
三个输入参数:用户名 密码 姓名
一个输出参数:用户的id
1.3 数据库中创建存储过程代码如下
create or replace procedure PR_addUser( v_username userinfo.username%type, v_password userinfo.password%type, v_name userinfo.name%type, v_out_id out userinfo.user_id%type) as begin --插入 insert into userinfo (username,password,name) values (v_username,v_password,v_name); --返回最大的id select max(userinfo.user_id) from userinfo; commit; EXCEPTION WHEN OTHERS THEN v_out_id :=-1; ROLLBACK; end PR_addUser;
2.springBoot项目中MyBatis调用存储过程
2.1 在mapper中添加接口
在接口中,两个接口的返回类型不同,但是都能够获取存储过程的输出参数。
因为存储过程的的“返回值”是将存储过程产生的结果放到参数的对象中,获取的返回值是从这个参数对象中获取。
public interface UserinfoMapper extends BaseMapper<Userinfo> { //通过HashMap 作为参数实现 void addUser(HashMap user); //通过实体类作为参数实现 Integer addUser2(Userinfo userinfo); }
2.2 通过MyBatis创建对应的方法
<!-- 通过HashMap 作为参数实现 --> <select id="addUser" statementType="CALLABLE" parameterMap="userInfomation" resultType="java.lang.Integer"> {call PR_ADDUSER(?,?,?,?)} </select> <parameterMap id="userInfomation" type="java.util.HashMap"> <parameter property="username" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/> <parameter property="password" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/> <parameter property="name" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/> <parameter property="id" jdbcType="INTEGER" javaType="java.lang.Integer" mode="OUT"/> </parameterMap> <!-- 通过实体类作为参数实现 --> <select id="addUser2" statementType="CALLABLE" parameterType="com.wanmait.oracledemo.pojo.Userinfo" resultType="java.lang.Integer"> {call PR_ADDUSER(#{username,mode=IN,jdbcType=VARCHAR}, #{password,mode=IN,jdbcType=VARCHAR}, #{name,mode=IN,jdbcType=VARCHAR}, #{userId,mode=OUT,jdbcType=INTEGER} )} </select>
2.3 直接调用mapper进行测试
@SpringBootTest public class UserinfoMapperTest { @Resource private UserinfoMapper userinfoMapper; @Test public void testAddUser(){ HashMap user=new HashMap(); user.put("username","lishi"); user.put("password","lishi"); user.put("name","lishi"); user.put("id",0); userinfoMapper.addUser(user); System.out.println("该用户的ID为:"+user.get("id")); } @Test public void testAddUser2(){ Integer v_out_id = null; Userinfo userinfo = new Userinfo(); userinfo.setUsername("李四"); userinfo.setPassword("asdfa"); userinfo.setName("lisi"); System.out.println(userinfo.toString()); userinfoMapper.addUser2(userinfo); System.out.println("该用户的ID为:"+userinfo.getUserId()); }
测试之后,两个测试方法都能够获得存储过程的输入参数的值。
这篇关于SpringBoot项目 MyBatis 调用Oracle存储过程的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-05小米13T Pro系统合集:性能与摄影的极致融合,值得你升级的系统ROM
- 2024-10-01基于Python+Vue开发的医院门诊预约挂号系统
- 2024-10-01基于Python+Vue开发的旅游景区管理系统
- 2024-10-01RestfulAPI入门指南:打造简单易懂的API接口
- 2024-10-01初学者指南:了解和使用Server Action
- 2024-10-01Server Component入门指南:搭建与配置详解
- 2024-10-01React 中使用 useRequest 实现数据请求
- 2024-10-01使用 golang 将ETH账户的资产平均分散到其他账户
- 2024-10-01JWT用户校验课程:从入门到实践
- 2024-10-01Server Component课程入门指南