mybatis 调用存储过程

来源:互联网 发布:软件系统结构图阶段 编辑:程序博客网 时间:2024/04/25 16:16

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

create table p_user(  id int primary key auto_increment,  name varchar(10),sex char(2)); insert into p_user(name,sex) values('A',"男");  insert into p_user(name,sex) values('B',"女");  insert into p_user(name,sex) values('C',"男");  

#创建存储过程(查询得到男性或女性的数量, 如果传入的是0就女性否则是男性)DELIMITER $CREATE PROCEDURE mybatis.ges_user_count(IN sex_id INT, OUT user_count INT)BEGIN  IF sex_id=0 THENSELECT COUNT(*) FROM mybatis.p_user WHERE p_user.sex='女' INTO user_count;ELSESELECT COUNT(*) FROM mybatis.p_user WHERE p_user.sex='男' INTO user_count;END IF;END $#调用存储过程DELIMITER ;SET @user_count = 0;CALL mybatis.ges_user_count(1, @user_count);SELECT @user_count;

public class User {private String id;private String name;private String sex;     //set和get方法}


userMapper.xml

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!--    调用存储过程 --><mapper namespace="com.lx.test7.userMapper">           <select id="getUserCount" parameterMap="getUserMap" statementType="CALLABLE">             CALL hibernate1.ges_user_count(?,?);          </select>                <parameterMap type="java.util.Map" id="getUserMap">          <parameter property="sexid"  mode="IN" jdbcType="INTEGER"/>          <parameter property="usercount" mode="OUT"  jdbcType="INTEGER"/>      </parameterMap>      </mapper>

测试类:

package com.lx.test7;import java.util.HashMap;import java.util.Map;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.junit.Test;import com.lx.bean.Classes;import com.lx.utils.FactoryUtil;public class Test7 {@Testpublic void test1(){SqlSessionFactory factory = FactoryUtil.getFactory();SqlSession session = factory.openSession();String statement = "com.lx.test7.userMapper.getUserCount";Map<String,Integer> parameter = new HashMap<String, Integer>();parameter.put("sexid", 0);parameter.put("usercount", -1);session.selectOne(statement, parameter);   int count = parameter.get("usercount");      System.out.println(count);session.close();}}




0 0
原创粉丝点击