mybatis調用存儲過程,帶in、out參數問題
更新時間:2024年01月27日 10:20:50 作者:獵人在吃肉
這篇文章主要介紹了mybatis調用存儲過程,帶in、out參數問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
1、需求
統(tǒng)計男性、女性的數量,如果傳入的是0,就統(tǒng)計女性的數量,否則統(tǒng)計男性的數量。
2、準備數據庫表、存儲過程
2.1、創(chuàng)建表,導入數據
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;
結果:

3、 Mapper 接口
package com.test;
public interface UserMapper{
public Integer getCount(Map map);
}
4、UserMapper.xml
統(tǒng)計男性、女性的數量, 如果傳入的是0,就統(tǒng)計女性的數量,否則統(tǒng)計男性。
<mapper namespace="com.test.UserMapper">
<!--
統(tǒng)計男性、女性的數量, 如果傳入的是0,就統(tǒng)計女性的數量,否則統(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、 測試調用
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);
}
}
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
IntelliJ IDEA2023中運行Spring Boot找不到VM options進
這篇文章主要介紹了IntelliJ IDEA2023中運行Spring Boot找不到VM options進行端口的修改的問題解決,本文通過圖文并茂的形式給大家介紹的非常詳細,需要的朋友可以參考下2023-11-11
Spring?Security配置多個數據源并添加登錄驗證碼的實例代碼
這篇文章主要介紹了Spring?Security配置多個數據源并添加登錄驗證碼,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-08-08
spring框架下@value注解屬性static無法獲取值問題
這篇文章主要介紹了spring框架下@value注解屬性static無法獲取值問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11
java中timer的schedule和scheduleAtFixedRate方法區(qū)別詳解
這篇文章主要為大家詳細介紹了java中timer的schedule和scheduleAtFixedRate方法區(qū)別,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-12-12

