【Mybaits学习】07_ 调用存储过程

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

1、创建表与存储过程

参数:IN `sex_id` int,OUT `user_count` int

2、创建表所对应的实体类

package nh.ui.automation.tools.Mybaits;

/**
 * 项目 :UI自动化测试 Mybaits 类描述:
 *
 * @author Eric
 * @date 2017年3月5日 nh.ui.automation.tools.Mybaits
 */
public class PUser {

    private int id;
    private String name;
    private String sex;

    /**
     *
     */
    public PUser() {
        super();
    }

    /*
     * (non-Javadoc)
     *
     * @see java.lang.Object#toString()
     */
    @Override
    public String toString() {
        return "PUser [id=" + id + ", name=" + name + ", sex=" + sex + "]";
    }

    /**
     * @param id
     * @param name
     * @param sex
     */
    public PUser(int id, String name, String sex) {
        super();
        this.id = id;
        this.name = name;
        this.sex = sex;
    }

    /**
     * @return the id
     */
    public int getId() {
        return id;
    }

    /**
     * @param id
     *            the id to set
     */
    public void setId(int id) {
        this.id = id;
    }

    /**
     * @return the name
     */
    public String getName() {
        return name;
    }

    /**
     * @param name
     *            the name to set
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * @return the sex
     */
    public String getSex() {
        return sex;
    }

    /**
     * @param sex
     *            the sex to set
     */
    public void setSex(String sex) {
        this.sex = sex;
    }

}

3、创建puserMapper文件

<?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="nh.ui.automation.tools.Mybaits.User.puserMapper">
    <select id="getCount" statementType="CALLABLE" parameterMap="getCountMap">
        CALL mybaits.ges_user_count(?,?)
    </select>
    <parameterMap type="java.util.Map" id="getCountMap">
        <parameter property="sex_id" mode="IN" jdbcType="INTEGER" />
        <parameter property="user_count" mode="OUT" jdbcType="INTEGER" />
    </parameterMap>
    <!--
        注意:此处定义的Map字段属性名必须与引用时一致
        Map<String, Integer> paramMap = new HashMap<String, Integer>();
        paramMap.put("sex_id", 0);
        paramMap.put("user_count", 0);

     -->
</mapper>

4、在Mybaits文件中注册puserMapper

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <properties resource="db.properties"></properties>

    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <dataSource type="POOLED">
                <property name="driver" value="${db.driver}" />
                <property name="url" value="${db.url}" />
                <property name="username" value="${db.username}" />
                <property name="password" value="${db.password}" />
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <mapper resource="Mappings/userMapper.xml" />
        <mapper resource="Mappings/orderMapper.xml" />
        <mapper resource="Mappings/employMapper.xml" />
        <mapper resource="Mappings/department2Mapper.xml" />
        <mapper resource="Mappings/userMapper2.xml" />
        <mapper class="nh.ui.automation.tools.mapper.UserMapper" />

    </mappers>
</configuration>

5、测试代码

package nh.ui.automation.tools.Mybaits;

import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

/**
 * Hello world!
 *
 */
public class EmployeeTest {
	public static void main(String[] args) {
		/**
		 * 1,加载mybaits的配置文件 2,构建sqlsession工厂 3,创建能执行sql的会话 4,映射sql的标识字符串 5,执行sql
		 * 6,打印结果
		 */

		String myBaitsConifg = "Mybaits.xml";
		InputStream loadConfig = EmployeeTest.class.getClassLoader().getResourceAsStream(myBaitsConifg);

		SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(loadConfig);
		SqlSession sqlSession = sessionFactory.openSession(true);
		String statement = "nh.ui.automation.tools.Mybaits.User.puserMapper.getCount";
		Map<String, Integer> paramMap = new HashMap<String, Integer>();
		paramMap.put("sex_id", 1);
		paramMap.put("user_count", 0);

		sqlSession.selectOne(statement, paramMap);

		Integer integer = paramMap.get("user_count");
		System.out.println(integer);
	}
}

 6、查看结果

2017-03-05 14:36:58,774 [main] DEBUG [nh.ui.automation.tools.Mybaits.User.puserMapper.getCount] - ==>  Preparing: CALL mybaits.ges_user_count(?,?)
2017-03-05 14:36:58,811 [main] DEBUG [nh.ui.automation.tools.Mybaits.User.puserMapper.getCount] - ==> Parameters: 1(Integer)
2
时间: 2024-07-30 10:11:13

【Mybaits学习】07_ 调用存储过程的相关文章

MyBatis入门学习教程-调用存储过程

一.提出需求 查询得到男性或女性的数量, 如果传入的是0就女性否则是男性 二.准备数据库表和存储过程 1 create table p_user( 2 id int primary key auto_increment, 3 name varchar(10), 4 sex char(2) 5 ); 6 7 insert into p_user(name,sex) values('A',"男"); 8 insert into p_user(name,sex) values('B',&qu

Mybatis学习笔记-调用存储过程

需求:查询得到男性或女性的数量,如果传入的是0就得到男性的数量,如果是1就得到女性的数量 数据库名mybatis  数据库表users create table users(           id int primary key auto_increment,           name varchar(10),          sex char(2) ); 创建存储过程 DELIMITER $ CREATE PROCEDURE mybatis.ges_user_count(IN sex

MyBatis学习总结(六)——调用存储过程(转载)

孤傲苍狼 只为成功找方法,不为失败找借口! MyBatis学习总结(六)--调用存储过程 一.提出需求 查询得到男性或女性的数量, 如果传入的是0就女性否则是男性 二.准备数据库表和存储过程 1 create table p_user( 2 id int primary key auto_increment, 3 name varchar(10), 4 sex char(2) 5 ); 6 7 insert into p_user(name,sex) values('A',"男");

[原创]java WEB学习笔记79:Hibernate学习之路--- 四种对象的状态,session核心方法:save()方法,persist()方法,get() 和 load() 方法,update()方法,saveOrUpdate() 方法,merge() 方法,delete() 方法,evict(),hibernate 调用存储过程,hibernate 与 触发器协同工作

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------

MyBatis学习总结_06_调用存储过程

一.提出需求 查询得到男性或女性的数量, 如果传入的是0就女性否则是男性 二.准备数据库表和存储过程 1 create table p_user( 2 id int primary key auto_increment, 3 name varchar(10), 4 sex char(2) 5 ); 6 7 insert into p_user(name,sex) values('A',"男"); 8 insert into p_user(name,sex) values('B',&qu

5.MyBaits调用存储过程

1.创建一个javaweb项目MyBatis_Part4_Procedure 2.在src下创建procedure.sql文件 1 --创建表 2 create table p_user( 3 id number primary key, 4 name varchar2(20), 5 sex varchar2(2) 6 ); 7 8 create sequence seq_puser; 9 10 insert into p_user values(seq_puser.nextval,'A','男

JDBC学习笔记(12):使用JDBC调用存储过程与批处理

存储过程:是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行.    存储过程中可以包含逻辑控制语句和数据操纵语句,它可以接受参数.输出参数.返回单个或多个结果集以及返回值. 由于存储过程在创建时即在数据库服务器上进行了编译并存储在数据库中,所以存储过程运行要比单个的SQL语句块要快.同时由于在调用时只需用提供存储过程名和必要的参数信息,所以在一定程度上也可以减少网络流量.简单网络负担. 创建存储过程: DELIMITER $$ DROP

MyBatis学习---------调用存储过程和缓存

一.提出需求 查询得到男性或女性的数量, 如果传入的是0就女性否则是男性 二.准备数据库表和存储过程 1 create table p_user( 2 id int primary key auto_increment, 3 name varchar(10), 4 sex char(2) 5 ); 6 7 insert into p_user(name,sex) values('A',"男"); 8 insert into p_user(name,sex) values('B',&qu

MyBatis学习总结(六)——调用存储过程

一.提出需求 查询得到男性或女性的数量, 如果传入的是0就女性否则是男性 二.准备数据库表和存储过程 1 create table p_user( 2 id int primary key auto_increment, 3 name varchar(10), 4 sex char(2) 5 ); 6 7 insert into p_user(name,sex) values('A',"男"); 8 insert into p_user(name,sex) values('B',&qu