zoukankan      html  css  js  c++  java
  • MyBatis——调用存储过程

    原文:http://www.cnblogs.com/xdp-gacl/p/4270352.html

    一、提出需求

      查询得到男性或女性的数量, 如果传入的是0就女性否则是男性

    二、准备数据库表和存储过程

    create table p_user(  
        id int primary key auto_increment,  
        name varchar(10),
        sex char(2)
    ); 
    
    insert into p_user(name,sex) values('A',"男");  
    insert into p_user(name,sex) values('B',"女");  
    insert into p_user(name,sex) values('C',"男");  
    
    -- 创建存储过程(查询得到男性或女性的数量, 如果传入的是0就女性否则是男性)
    DELIMITER $
    CREATE PROCEDURE mybatis.ges_user_count(IN sex_id INT, OUT user_count INT)
    BEGIN  
    IF sex_id=0 THEN
    SELECT COUNT(*) FROM mybatis.p_user WHERE p_user.sex='' INTO user_count;
    ELSE
    SELECT COUNT(*) FROM mybatis.p_user WHERE p_user.sex='' INTO user_count;
    END IF;
    END 
    $
    
    -- 调用存储过程
    DELIMITER ;
    SET @user_count = 0;
    CALL mybatis.ges_user_count(1, @user_count);
    SELECT @user_count;

    三、编辑userMapper.xml

      编辑userMapper.xml文件,添加如下的配置项

    <!-- 
            查询得到男性或女性的数量, 如果传入的是0就女性否则是男性
         -->
        <select id="getUserCount" parameterMap="getUserCountMap" statementType="CALLABLE">
            CALL mybatis.ges_user_count(?,?)
        </select>
        
        <!--
            parameterMap.put("sexid", 0);
            parameterMap.put("usercount", -1);
         -->
        <parameterMap type="java.util.Map" id="getUserCountMap">
            <parameter property="sexid" mode="IN" jdbcType="INTEGER"/>
            <parameter property="usercount" mode="OUT" jdbcType="INTEGER"/>
        </parameterMap>

    四、编写单元测试代码

    package me.gacl.test;
    
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    import me.gacl.custom.model.ConditionUser;
    import me.gacl.domain.User;
    import me.gacl.util.MyBatisUtil;
    import org.apache.ibatis.session.SqlSession;
    import org.junit.Test;
    
    /**
     * @author gacl
     * 测试调用存储过程
     */
    public class Test6 {
        
        @Test
        public void testGetUserCount(){
            SqlSession sqlSession = MyBatisUtil.getSqlSession();
            /**
             * 映射sql的标识字符串,
             * me.gacl.mapping.userMapper是userMapper.xml文件中mapper标签的namespace属性的值,
             * getUserCount是select标签的id属性值,通过select标签的id属性值就可以找到要执行的SQL
             */
            String statement = "me.gacl.mapping.userMapper.getUserCount";//映射sql的标识字符串
            Map<String, Integer> parameterMap = new HashMap<String, Integer>();
            parameterMap.put("sexid", 1);
            parameterMap.put("usercount", -1);
            sqlSession.selectOne(statement, parameterMap);
            Integer result = parameterMap.get("usercount");
            System.out.println(result);
            sqlSession.close();
        }
    }
  • 相关阅读:
    project 2013 激活 key 7YHNW-RVCQY-VBDB2-QX69Q-B96WK viso 66DNF-28W69-W4PPV-W3VYT-TJDBQ
    电脑快捷键
    Error (167005): Can't assign I/O pad "GX_TX" to PIN_AG27 because this causes failure in the placement of the other atoms in its associated channel
    学习资源
    数值孔径
    网络通信芯片
    DMD数字微镜
    运放输入阻抗
    DS18B20测温
    LED灯开关电路
  • 原文地址:https://www.cnblogs.com/shihaiming/p/6209914.html
Copyright © 2011-2022 走看看