Mybatis框架學習總結-調用存儲過程


設計需求

查詢數據庫,查詢得到男性或女性的數量,如果傳入的參數是0查詢女性,否則查詢男性。

准備數據庫表和存儲過程

1.准備person表:

CREATE TABLE person(
 id INT PRIMARY KEY AUTO_INCREMENT,
 NAME VARCHAR(10),
 sex CHAR(2)
);

INSERT INTO person(NAME,sex) VALUES('A',"m");
INSERT INTO person(NAME,sex) VALUES('B',"f");
INSERT INTO person(NAME,sex) VALUES('C',"m");

查看person表的內容:

創建存儲過程:

創建存儲過程,查詢得到男性或女性的數量,如果傳入的是0就是女性,否則就是男性

DELIMITER $
 CREATE PROCEDURE mybatis.ges_person_count(IN sex_id INT ,OUT person_count INT)
 BEGIN
 IF sex_id=0 THEN
 SELECT COUNT(*) FROM mybatis.`person` WHERE person.`sex`='f' INTO person_count;
 ELSE
 SELECT COUNT(*) FROM mybatis.`person` WHERE person.`sex`='m' INTO person_count;
 END IF;
 END
$

 

調用存儲過程

DELIMITER ;
SET @person_count=0;
CALL mybatis.`ges_person_count`(1,@person_count);
SELECT @person_count;

2.編輯userMapper.xml,你也可以在別的xml中配置,這個隨意

<!-- 調用存儲過程得到男性或女性的數量,如果傳入的是0,就女性,否則是男性 -->
    <select id="getPersonCount" parameterMap="getPersonCountMap" statementType="CALLABLE">
        CALL mybatis.`ges_person_count`(?,?);
    </select>
    
    <!-- parameterMap.put("sexid",0)
         parameterMap.put("usercount,-1);
     -->
     <parameterMap type="java.util.Map" id="getPersonCountMap">
         <parameter property="sexid" mode="IN" jdbcType="INTEGER"/>
         <parameter property="personcount" mode="OUT" jdbcType="INTEGER"/>
     </parameterMap>

3.編寫單元測試代碼:

Reader reader = Resources.getResourceAsReader(resource);
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
        String statement = "com.fpc.Mapping.userMapper.getPersonCount";
        SqlSession session = sessionFactory.openSession();
        Map<String,Integer> parameterMap = new HashMap<>();
        parameterMap.put("sexid", 0);
        parameterMap.put("personcount", -1);
        session.selectOne(statement,parameterMap);
        int count = parameterMap.get("personcount");
        String profile = "";
        if ( parameterMap.get("sexid") == 0 ) {
            profile += "女生的數量為:";
        } else {
            profile += "男生的樹數量為:";
        }
        System.out.println( profile + count);

執行結果:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM