08_调用存储过程
1 需求
查询得到男性或女性的数量, 如果传入的是0就女性否则是男性
2 准备数据表和存储过程
2.1 表及数据
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',"男");
2.2 存储过程
#创建存储过程(查询得到男性或女性的数量, 如果传入的是0就女性否则是男性)DELIMITER $CREATE PROCEDURE mybatis.ges_user_count(IN sex_id INT, OUT user_count INT)BEGINIF sex_id=0 THENSELECT COUNT(*) FROM mybatis.p_user WHERE p_user.sex='女' INTO user_count;ELSESELECT COUNT(*) FROM mybatis.p_user WHERE p_user.sex='男' INTO user_count;END IF;END$
2.3 调用存储过程
#调用存储过程DELIMITER ;SET @user_count = 0;CALL mybatis.ges_user_count(1, @user_count);SELECT @user_count;
3 创建表的实体类
public class PUser {private String id;private String name;private String sex;}
4 userMapper.xml
<mapper namespace="cn.imentors.mybatis.test8.userMapper"><!--查询得到男性或女性的数量, 如果传入的是0就女性否则是男性CALL mybatis.get_user_count(1, @user_count);--><select id="getCount" statementType="CALLABLE" parameterMap="getCountMap">call mybatis.get_user_count(?,?)</select><parameterMap type="java.util.Map" id="getCountMap"><parameter property="sexid" mode="IN" jdbcType="INTEGER"/><parameter property="usercount" mode="OUT" jdbcType="INTEGER"/></parameterMap></mapper>
- <select>
- parameterMap:引用<parameterMap>
- statementType:指定statement的真实类型,CALLABLE执行调用存储过程的语句。
- <parameterMap>:定义多个参数的键值对
- type:需要传递的参数的真实类型,java.util.Map
- <parameter>:指定一个参数的key--value值,它的property对应的值是Map中的key值
5 测试
@Testpublic void test() {SqlSessionFactory factory = MybatisUtils.getFactory();SqlSession session = factory.openSession();String statement = "cn.imentors.mybatis.test8.userMapper.getCount";Map<String, Integer> parameterMap = new HashMap<String, Integer>();parameterMap.put("sexid", 1);parameterMap.put("usercount", -1);session.selectOne(statement, parameterMap);//取值Integer result = parameterMap.get("usercount");System.out.println(result);session.close();}
捐赠我们
良师益友工作室一直在致力于帮助编程爱好更加快速方便地学习编程,如果您对我们的成果表示认同并且觉得对你有所帮助,欢迎您对我们捐赠^_^。 
良师益友工作室一直在致力于帮助编程爱好更加快速方便地学习编程,如果您对我们的成果表示认同并且觉得对你有所帮助,欢迎您对我们捐赠^_^。


浙公网安备 33010602011771号