mybatis调用存储过程,带in、out参数问题

 更新时间:2024年01月27日 10:20:50   作者:猎人在吃肉  
这篇文章主要介绍了mybatis调用存储过程,带in、out参数问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

1、需求

统计男性、女性的数量,如果传入的是0,就统计女性的数量,否则统计男性的数量。

2、准备数据库表、存储过程

2.1、创建表,导入数据

create table p_user(  
	id int primary key auto_increment,  
	name varchar(10),
	sex char(2)
) engine=innodb default charset=utf8 ; 

insert into p_user(name,sex) values('A',"男");  
insert into p_user(name,sex) values('B',"女");  
insert into p_user(name,sex) values('C',"男");  

2.2、创建存储过程

delimiter $
drop procedure if exists get_user_count;

create procedure get_user_count(in sex_id int, out user_count int)
begin  
	if sex_id=0 then
		select count(*) from p_user where p_user.sex='女' into user_count;
	else
		select count(*) from p_user where p_user.sex='男' into user_count;
	end if;
end $
delimiter ;

2.3、测试存储过程

call get_user_count(1, @user_count);  ## 0:统计女性的,1:统计男性的
select @user_count;

结果:

3、 Mapper 接口

package com.test;

public interface  UserMapper{
	public Integer getCount(Map map);
}

4、UserMapper.xml

统计男性、女性的数量, 如果传入的是0,就统计女性的数量,否则统计男性。

<mapper namespace="com.test.UserMapper">
	<!-- 
		统计男性、女性的数量, 如果传入的是0,就统计女性的数量,否则统计男性
		call get_user_count(1, @user_count);
	 -->
	 <select id="getCount" statementType="CALLABLE" parameterMap="getCountMap">
	 	call get_user_count(?,?)
	 </select>
    
	 <parameterMap type="java.util.Map" id="getCountMap">
	 	<parameter property="sex_id" mode="IN" jdbcType="INTEGER"/>
	 	<parameter property="user_count" mode="OUT" jdbcType="INTEGER"/>
	 </parameterMap>
</mapper>

5、 测试调用

public class UserTest {

	public static void main(String[] args) throws IOException {
		
		Reader reader = Resources.getResourceAsReader("conf.xml");		
		SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);		
		SqlSession  session = sessionFactory.openSession();
		
		Map<String, Integer> paramMap = new HashMap<>();
        paramMap.put("sex_id", 0);

        session.selectOne(statement, paramMap);

        Integer userCount = paramMap.get("user_count");
        System.out.println(userCount);
	}
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • java中Hashtable和HashMap的区别分析

    java中Hashtable和HashMap的区别分析

    java中Hashtable和HashMap的区别分析,需要的朋友可以参考一下
    2013-04-04
  • springboot2.2 集成 activity6实现请假流程(示例详解)

    springboot2.2 集成 activity6实现请假流程(示例详解)

    这篇文章主要介绍了springboot2.2 集成 activity6实现请假完整流程示例详解,本文通过示例代码图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • Java 顺序表专题解读

    Java 顺序表专题解读

    顺序表,全名顺序存储结构,是线性表的一种。线性表用于存储逻辑关系为“一对一”的数据,顺序表自然也不例外,不仅如此,顺序表对数据物理存储结构也有要求。顺序表存储数据时,会提前申请一整块足够大小的物理空间,然后将数据依次存储起来,存储时数据元素间不留缝隙
    2021-11-11
  • spring boot中spring框架的版本升级图文教程

    spring boot中spring框架的版本升级图文教程

    Spring Boot是一款基于Spring框架的快速开发框架,它提供了一系列的开箱即用的功能和组件,这篇文章主要给大家介绍了关于spring boot中spring框架的版本升级的相关资料,需要的朋友可以参考下
    2023-10-10
  • Java实现单链表基础操作

    Java实现单链表基础操作

    大家好,本篇文章主要讲的是Java实现单链表基础操作,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-02-02
  • JAVA生成八位不重复随机数最快的方法总结(省时间省空间)

    JAVA生成八位不重复随机数最快的方法总结(省时间省空间)

    随机数在实际中使用很广泛,比如要随即生成一个固定长度的字符串、数字,这篇文章主要给大家介绍了关于JAVA生成八位不重复随机数最快的方法,文中介绍的方法省时间省空间,需要的朋友可以参考下
    2024-03-03
  • Java工作环境的配置与Eclipse的安装过程

    Java工作环境的配置与Eclipse的安装过程

    这篇文章主要介绍了Java工作环境的配置与Eclipse的安装过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • SpringBoot中YAML配置文件实例详解

    SpringBoot中YAML配置文件实例详解

    前面一直在使用properties配置文件,spring boot也支持yaml配置文件,下面这篇文章主要给大家介绍了关于SpringBoot中YAML配置文件的相关资料,需要的朋友可以参考下
    2023-04-04
  • String与Blob互转和file文件与Blob互转方式

    String与Blob互转和file文件与Blob互转方式

    这篇文章主要介绍了String与Blob互转和file文件与Blob互转方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • Java Synchronized的使用详解

    Java Synchronized的使用详解

    这篇文章主要介绍了Java Synchronized的使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07

最新评论