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

    直接贴代码吧 注解式可以调用 但是不能返回结果 所有我就贴配置式的 有知道注解怎么返回结果的请评论
    数据库代码

    #表
    DROP TABLE IF EXISTS `p_user`;
    CREATE TABLE `p_user` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `name` varchar(10) DEFAULT NULL,
      `sex` char(2) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
    
    #模拟数据
    INSERT INTO `p_user` VALUES ('1', 'A', '男');
    INSERT INTO `p_user` VALUES ('2', 'B', '女');
    INSERT INTO `p_user` VALUES ('3', 'C', '男');
    #存储过程
    CREATE PROCEDURE ges_user_count(OUT user_count int)
    BEGIN  
    IF sex_id=0 THEN
    SELECT COUNT(*) FROM p_user WHERE p_user.sex='女' INTO user_count;
    ELSE
    SELECT COUNT(*) FROM p_user WHERE p_user.sex='男' INTO user_count;
    END IF;
    END

    下面是mybatis配置的代码

        <!-- 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>
        <!-- 查询得到男性或女性的数量, 如果传入的是0就女性否则是男性 statementType="CALLABLE"存储过程类型 -->
        <select id="getUserCount" parameterMap="getUserCountMap"
            statementType="CALLABLE">
            CALL ges_user_count(?,?)
        </select>

    dao层代码

    //接口
    public interface UserMapper {
        public int getUserCount();
    }
    //实现类 我用spring的自动注入 也可以通过实例化来new SqlSessionFactory
    package com.dw.user.dao;
    
    import java.util.HashMap;
    import java.util.Map;
    
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Repository;
    @Repository("userMapper")
    public class UserMapperImpl implements UserMapper{
        //注入SqlSessionFactory
        @Autowired
        SqlSessionFactory sessionFactory;
    
        public void setSessionFactory(SqlSessionFactory sessionFactory) {
            this.sessionFactory = sessionFactory;
        }
        @Override
        public int getUserCount() {
            SqlSession sqlSession = sessionFactory.openSession();
            Map<String, Integer> parameterMap = new HashMap<String, Integer>();
            //设置参数
            parameterMap.put("sexid", 1);
            parameterMap.put("usercount", -1);
            //Integer i = 
            sqlSession.selectOne("com.dw.user.dao.UserMapper.getUserCount",parameterMap);
            Integer i = parameterMap.get("usercount");
            System.out.println(i);
            sqlSession.close();
            return i;
        }
    }
    
    

    后面就可以调用实现类的返回值打印就行了 我就不贴了 如果要 留言就行

    勿忘初心 得过且过
  • 相关阅读:
    isinstance函数
    Django之ORM那些相关操作
    Django ~ 2
    Django ~ 1
    Django详解之models操作
    Django模板语言相关内容
    livevent的几个问题
    客户端,服务器发包走向
    关闭客户端连接的两种情况
    std::vector<Channel2*> m_allChannels;容器,以及如何根据channelid的意义
  • 原文地址:https://www.cnblogs.com/xpf1009/p/9227304.html
Copyright © 2011-2022 走看看