• 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);

    执行结果:

  • 相关阅读:
    python的ORM框架SQLAlchemy
    SQLAlchemy技术文档(中文版)-下
    SQLAlchemy技术文档(中文版)-上
    python的class的__str__和__repr__(转)
    虚拟化技术之KVM
    cobbler部署安装
    pxe+kickstart 无人值守安装CentOS7.1
    超详细saltstack安装部署及应用
    页面缓存
    db2 常用命令
  • 原文地址:https://www.cnblogs.com/fangpengchengbupter/p/7843909.html
Copyright © 2020-2023  润新知