直接贴代码吧 注解式可以调用 但是不能返回结果 所有我就贴配置式的 有知道注解怎么返回结果的请评论
数据库代码
#表
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@AutowiredSqlSessionFactory sessionFactory;public void setSessionFactory(SqlSessionFactory sessionFactory) {this.sessionFactory = sessionFactory;}@Overridepublic 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;}
}
后面就可以调用实现类的返回值打印就行了 我就不贴了 如果要 留言就行