您的位置:首页 > 其它

mybatis调用存储过程

2017-10-25 13:25 253 查看

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

<!-- 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>


//接口
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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mybatis 存储