mybatis調(diào)用存儲過程,帶in、out參數(shù)問題
1、需求
統(tǒng)計男性、女性的數(shù)量,如果傳入的是0,就統(tǒng)計女性的數(shù)量,否則統(tǒng)計男性的數(shù)量。
2、準備數(shù)據(jù)庫表、存儲過程
2.1、創(chuàng)建表,導(dǎo)入數(shù)據(jù)
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、創(chuàng)建存儲過程
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:統(tǒng)計女性的,1:統(tǒng)計男性的 select @user_count;
結(jié)果:

3、 Mapper 接口
package com.test;
public interface UserMapper{
public Integer getCount(Map map);
}
4、UserMapper.xml
統(tǒng)計男性、女性的數(shù)量, 如果傳入的是0,就統(tǒng)計女性的數(shù)量,否則統(tǒng)計男性。
<mapper namespace="com.test.UserMapper">
<!--
統(tǒng)計男性、女性的數(shù)量, 如果傳入的是0,就統(tǒng)計女性的數(shù)量,否則統(tǒng)計男性
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、 測試調(diào)用
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);
}
}
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
java中Hashtable和HashMap的區(qū)別分析
java中Hashtable和HashMap的區(qū)別分析,需要的朋友可以參考一下2013-04-04
springboot2.2 集成 activity6實現(xiàn)請假流程(示例詳解)
這篇文章主要介紹了springboot2.2 集成 activity6實現(xiàn)請假完整流程示例詳解,本文通過示例代碼圖文相結(jié)合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07
JAVA生成八位不重復(fù)隨機數(shù)最快的方法總結(jié)(省時間省空間)
隨機數(shù)在實際中使用很廣泛,比如要隨即生成一個固定長度的字符串、數(shù)字,這篇文章主要給大家介紹了關(guān)于JAVA生成八位不重復(fù)隨機數(shù)最快的方法,文中介紹的方法省時間省空間,需要的朋友可以參考下2024-03-03
Java工作環(huán)境的配置與Eclipse的安裝過程
這篇文章主要介紹了Java工作環(huán)境的配置與Eclipse的安裝過程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-02-02
String與Blob互轉(zhuǎn)和file文件與Blob互轉(zhuǎn)方式
這篇文章主要介紹了String與Blob互轉(zhuǎn)和file文件與Blob互轉(zhuǎn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-05-05

