MyBatis學習總結(六)——調用存儲過程

1、提出需求

  查詢獲得男性或女性的數量, 若是傳入的是0就女性不然是男性java

2、準備數據庫表和存儲過程

 1 create table p_user(  
 2     id int primary key auto_increment,  
 3     name varchar(10),
 4     sex char(2)
 5 ); 
 6 
 7 insert into p_user(name,sex) values('A',"男");  
 8 insert into p_user(name,sex) values('B',"女");  
 9 insert into p_user(name,sex) values('C',"男");  
10 
11 -- 建立存儲過程(查詢獲得男性或女性的數量, 若是傳入的是0就女性不然是男性)
12 DELIMITER $
13 CREATE PROCEDURE mybatis.ges_user_count(IN sex_id INT, OUT user_count INT)
14 BEGIN  
15 IF sex_id=0 THEN
16 SELECT COUNT(*) FROM mybatis.p_user WHERE p_user.sex='' INTO user_count;
17 ELSE
18 SELECT COUNT(*) FROM mybatis.p_user WHERE p_user.sex='' INTO user_count;
19 END IF;
20 END 
21 $
22 
23 -- 調用存儲過程
24 DELIMITER ;
25 SET @user_count = 0;
26 CALL mybatis.ges_user_count(1, @user_count);
27 SELECT @user_count;

3、編輯userMapper.xml

  編輯userMapper.xml文件,添加以下的配置項sql

 1 <!-- 
 2         查詢獲得男性或女性的數量, 若是傳入的是0就女性不然是男性
 3      -->
 4     <select id="getUserCount" parameterMap="getUserCountMap" statementType="CALLABLE">
 5         CALL mybatis.ges_user_count(?,?)
 6     </select>
 7     
 8     <!--
 9         parameterMap.put("sexid", 0);
10         parameterMap.put("usercount", -1);
11      -->
12     <parameterMap type="java.util.Map" id="getUserCountMap">
13         <parameter property="sexid" mode="IN" jdbcType="INTEGER"/>
14         <parameter property="usercount" mode="OUT" jdbcType="INTEGER"/>
15     </parameterMap>

4、編寫單元測試代碼

 1 package me.gacl.test;
 2 
 3 import java.util.HashMap;
 4 import java.util.List;
 5 import java.util.Map;
 6 
 7 import me.gacl.custom.model.ConditionUser;
 8 import me.gacl.domain.User;
 9 import me.gacl.util.MyBatisUtil;
10 import org.apache.ibatis.session.SqlSession;
11 import org.junit.Test;
12 
13 /**
14  * @author gacl
15  * 測試調用存儲過程
16  */
17 public class Test6 {
18     
19     @Test
20     public void testGetUserCount(){
21         SqlSession sqlSession = MyBatisUtil.getSqlSession();
22         /**
23          * 映射sql的標識字符串,
24          * me.gacl.mapping.userMapper是userMapper.xml文件中mapper標籤的namespace屬性的值,
25          * getUserCount是select標籤的id屬性值,經過select標籤的id屬性值就能夠找到要執行的SQL
26          */
27         String statement = "me.gacl.mapping.userMapper.getUserCount";//映射sql的標識字符串
28         Map<String, Integer> parameterMap = new HashMap<String, Integer>();
29         parameterMap.put("sexid", 1);
30         parameterMap.put("usercount", -1);
31         sqlSession.selectOne(statement, parameterMap);
32         Integer result = parameterMap.get("usercount");
33         System.out.println(result);
34         sqlSession.close();
35     }
36 }
相關文章
相關標籤/搜索