• 08_调用存储过程


    1 需求

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

    2 准备数据表和存储过程

    2.1 表及数据

    1. create table p_user(
    2. id int primary key auto_increment,
    3. name varchar(10),
    4. sex char(2)
    5. );
    6. insert into p_user(name,sex) values('A',"男");
    7. insert into p_user(name,sex) values('B',"女");
    8. insert into p_user(name,sex) values('C',"男");

    2.2 存储过程

    1. #创建存储过程(查询得到男性或女性的数量, 如果传入的是0就女性否则是男性)
    2. DELIMITER $
    3. CREATE PROCEDURE mybatis.ges_user_count(IN sex_id INT, OUT user_count INT)
    4. BEGIN
    5. IF sex_id=0 THEN
    6. SELECT COUNT(*) FROM mybatis.p_user WHERE p_user.sex='女' INTO user_count;
    7. ELSE
    8. SELECT COUNT(*) FROM mybatis.p_user WHERE p_user.sex='男' INTO user_count;
    9. END IF;
    10. END
    11. $

    2.3 调用存储过程

    1. #调用存储过程
    2. DELIMITER ;
    3. SET @user_count = 0;
    4. CALL mybatis.ges_user_count(1, @user_count);
    5. SELECT @user_count;

    3 创建表的实体类

    1. public class PUser {
    2. private String id;
    3. private String name;
    4. private String sex;

    4 userMapper.xml

    1. <mapper namespace="cn.imentors.mybatis.test8.userMapper">
    2. <!--
    3. 查询得到男性或女性的数量, 如果传入的是0就女性否则是男性
    4. CALL mybatis.get_user_count(1, @user_count);
    5. -->
    6. <select id="getCount" statementType="CALLABLE" parameterMap="getCountMap">
    7. call mybatis.get_user_count(?,?)
    8. </select>
    9. <parameterMap type="java.util.Map" id="getCountMap">
    10. <parameter property="sexid" mode="IN" jdbcType="INTEGER"/>
    11. <parameter property="usercount" mode="OUT" jdbcType="INTEGER"/>
    12. </parameterMap>
    13. </mapper>
    • <select>
      • parameterMap:引用<parameterMap>
      • statementType:指定statement的真实类型,CALLABLE执行调用存储过程的语句。
    • <parameterMap>:定义多个参数的键值对
      • type:需要传递的参数的真实类型,java.util.Map
      • <parameter>:指定一个参数的key--value值,它的property对应的值是Map中的key值

    5 测试

    1. @Test
    2. public void test() {
    3. SqlSessionFactory factory = MybatisUtils.getFactory();
    4. SqlSession session = factory.openSession();
    5. String statement = "cn.imentors.mybatis.test8.userMapper.getCount";
    6. Map<String, Integer> parameterMap = new HashMap<String, Integer>();
    7. parameterMap.put("sexid", 1);
    8. parameterMap.put("usercount", -1);
    9. session.selectOne(statement, parameterMap);
    10. //取值
    11. Integer result = parameterMap.get("usercount");
    12. System.out.println(result);
    13. session.close();
    14. }






    捐赠我们
        良师益友工作室一直在致力于帮助编程爱好更加快速方便地学习编程,如果您对我们的成果表示认同并且觉得对你有所帮助,欢迎您对我们捐赠^_^。
        
  • 相关阅读:
    6 15种对抗攻击的防御方法
    5 12种生成对抗样本的方法
    4 基于优化的攻击——CW
    3 基于梯度的攻击——MIM
    Hibernate 5 Maven 仓库的 Artifacts
    Hibernate 5 发行组件下载
    Hibernate 5 的模块/包(modules/artifacts)
    Hibernate 5 开始使用指南前言
    Git 如何针对项目修改本地提交提交人的信息
    Spring Batch 4.2 新特性
  • 原文地址:https://www.cnblogs.com/imentors/p/4810472.html
Copyright © 2020-2023  润新知